【问题标题】:How to make a sum in NetCDF4 by xarray如何通过 xarray 在 NetCDF4 中求和
【发布时间】:2021-03-12 16:50:43
【问题描述】:

我想根据降水量的每日值对我的 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

【问题讨论】:

    标签: python pandas netcdf python-xarray netcdf4


    【解决方案1】:

    您必须使用.groupby 而不是.resample

    这应该可行:

    monthly_dataset =daily_dataset['Precipitation_Flux'].groupby('time.month').sum('time')
    

    您首先按月份对数据进行分组,然后您必须沿时间轴取总和。

    【讨论】:

    • 这实际上将创建具有 12 个记录(月)和非常高的降水量(雨季约为 17 000 毫米)的数据集。但是,至少有些东西在起作用 :-) 现在想想如何分别为每一年制作它。顺便说一句...为什么 resample 不再为此工作了? :-)
    【解决方案2】:

    我发现这个命令对我有用!

    monthly_dataset = daily_dataset['Precipitation_Flux'].resample(time ='M', 
    skipna=False).sum()
    

    但是,xarray.Dataset.resample 的文档可能相当混乱,因为函数的第一个参数 - 通常不编写索引器!所以要注意这一点! :-)

    【讨论】:

      猜你喜欢
      • 2021-05-14
      • 1970-01-01
      • 1970-01-01
      • 2020-10-11
      • 1970-01-01
      • 2018-03-08
      • 2021-08-21
      • 2021-01-23
      • 1970-01-01
      相关资源
      最近更新 更多