Python xarray-如何按yyyy-01-01和yyyy-07-01对多年的时间序列数据进行分组或重新采样

Python xarray-如何按yyyy-01-01和yyyy-07-01对多年的时间序列数据进行分组或重新采样,python,pandas,numpy,python-xarray,Python,Pandas,Numpy,Python Xarray,我的time serries数据是一个称为“数据输出”的xarray数据数组对象,每半年一次 <xarray.DataArray '__xarray_dataarray_variable__' (time: 10, latitude: 106, longitude: 193)> dask.array<shape=(4, 106, 193), dtype=int32, chunksize=(2, 106, 193)> Coordinates: * latitude

我的time serries数据是一个称为“数据输出”的xarray数据数组对象,每半年一次

<xarray.DataArray '__xarray_dataarray_variable__' (time: 10, latitude: 106, longitude: 193)>
dask.array<shape=(4, 106, 193), dtype=int32, chunksize=(2, 106, 193)>
Coordinates:
  * latitude   (latitude) float32 -39.2 -39.149525 ... -33.950478 -33.9
  * longitude  (longitude) float32 140.8 140.84792 140.89584 ... 149.95209 150.0
  * time       (time) datetime64[ns] 1972-01-01 1972-07-01 1973-01-01 1973-07-01 ... 1981-01-01 1981-07-01

但是,输出DataArray对象丢失了
时间
维度。

假设您从以下设置开始:

将熊猫作为pd导入
将xarray作为xr导入
时间=pd.日期\范围('2000',周期=100,频率=M')
da=xr.DataArray(范围(len(times)),[('time',times)])
重采样=da.resample(time='6MS',closed='left').sum('time'))
实现接近您期望结果的快速方法是使用
groupby
,按月份分组:

result=resampled.groupby('time.month').std('time'))
这将为您留下一个结果
数据数组
,该数组具有
'month'
维度,值为
1
7


数组([160.269218,164.972725])
协调:
*月(月)int64 1 7
如果您想要更具描述性的标签,可以构造一个
DataArray
用于分组,例如

jan\u jun=xr.full\u like(重采样.time,'jan jun',dtype='1〕
da_all_jan_jun = da_output_halfyearly[::2]
da_all_jul_dec = da_output_halfyearly[1::2]

da_jan_jun_std = da_all_jan_jun.std(dim='time')
da_jul_dec_std = da_all_jul_dec.std(dim='time')