[英]How to make a sum in NetCDF4 by xarray
我想從每日降水值中每月匯總我的 NetCDF4 文件。 但是,我不確定我做錯了什么。 這篇文章中的代碼似乎發生了一些變化: Sum a daily time series into a Monthly time series with a NaN value threshold
我在圖書館文檔中沒有發現任何有用的東西。
這是我的代碼:
import netCDF4
from netCDF4 import Dataset
import numpy as np
import xarray as xr
import pandas as pd
data = xr.open_dataset('C3S_concat_cropped.nc')
# or I can use
data2 = Dataset("C3S_concat_cropped.nc", "r", format="NETCDF4")
print(data)
Out:
<xarray.Dataset>
Dimensions: (lat: 115, lon: 140, time: 15157)
Coordinates:
* lat (lat) float64 -7.4 -7.5 -7.6 -7.7 ... -18.6 -18.7 -18.8
* lon (lon) float64 21.1 21.2 21.3 21.4 ... 34.8 34.9 35.0
* time (time) datetime64[ns] 1979-01-01 ... 2020-06-30
Data variables:
Precipitation_Flux (time, lat, lon) float32 ...
daily_dataset = xr.Dataset({'Precipitation_Flux': (['time', 'lat', 'lon'],
data['Precipitation_Flux'][:, :, :])}, coords={'lat': (data['lat'][:]),
'lon': (data['lon'][:]), 'time': pd.date_range('1979-01-01', periods=15157)})
monthly_dataset = daily_dataset['Precipitation_Flux'].resample(indexer='M', time="1D",
skipna=False).sum()
我的價值錯誤:
ValueError: the first argument to .resample must be a dictionary
您必須使用.groupby
而不是.resample
。
這應該有效:
monthly_dataset =daily_dataset['Precipitation_Flux'].groupby('time.month').sum('time')
您首先按月份對數據進行分組,然后您必須沿時間軸取總和。
我發現這個命令對我有用!
monthly_dataset = daily_dataset['Precipitation_Flux'].resample(time ='M',
skipna=False).sum()
但是,xarray.Dataset.resample 的文檔可能非常令人困惑,因為 function 的第一個參數 - 通常不編寫索引器:所以請注意! :-)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.