循环 netCDF 日期时间格式并根据月份计算平均值
Loop over netCDF datetime format and calculate mean based on month
我有一个维度为 (504, 720, 500) 的数据集(netCDF4 input_file),其中第一个是日期时间值:
0 1979-01-15
1 1979-02-15
2 1979-03-15
3 1979-04-15
4 1979-05-15
...
499 2020-08-15
500 2020-09-15
501 2020-10-15
502 2020-11-15
503 2020-12-15
Length: 504, dtype: datetime64[ns]
有一个变量的值我想每月取平均值。所以最终我想要 12 个值,其中变量的平均值基于第一个维度中的月份。
我试过像这样遍历它:
# empty dataframe
df = pd.DataFrame(columns = ['Month', 'Value'])
for i in range(size(df['time'])):
month = input_file['time'][i].month # get the current month
avg = np.average(input_file['values'][i, :, :]) # average for the month of that year
# append to df
df = df.append(pd.DataFrame({'Month' : month,
'Value' : avg})
但直到这里我有点迷茫,这不起作用(语法无效)我仍然需要再次循环这些值以分别获得每个月的平均值。
假设第 2 维和第 3 维是纬度和经度,看来您要做的只是:
input_file.mean(dim = ['lat', 'lon'])
然后您可以使用 .to_dataframe()
转换为数据帧
我不确定这是不是你需要的
xr.open_dataset('file.nc')
xr.resample(time ='M').mean()
我有一个维度为 (504, 720, 500) 的数据集(netCDF4 input_file),其中第一个是日期时间值:
0 1979-01-15
1 1979-02-15
2 1979-03-15
3 1979-04-15
4 1979-05-15
...
499 2020-08-15
500 2020-09-15
501 2020-10-15
502 2020-11-15
503 2020-12-15
Length: 504, dtype: datetime64[ns]
有一个变量的值我想每月取平均值。所以最终我想要 12 个值,其中变量的平均值基于第一个维度中的月份。
我试过像这样遍历它:
# empty dataframe
df = pd.DataFrame(columns = ['Month', 'Value'])
for i in range(size(df['time'])):
month = input_file['time'][i].month # get the current month
avg = np.average(input_file['values'][i, :, :]) # average for the month of that year
# append to df
df = df.append(pd.DataFrame({'Month' : month,
'Value' : avg})
但直到这里我有点迷茫,这不起作用(语法无效)我仍然需要再次循环这些值以分别获得每个月的平均值。
假设第 2 维和第 3 维是纬度和经度,看来您要做的只是:
input_file.mean(dim = ['lat', 'lon'])
然后您可以使用 .to_dataframe()
我不确定这是不是你需要的
xr.open_dataset('file.nc')
xr.resample(time ='M').mean()