使用不同的方法重新采样xarray DataSet

时间:2016-12-05 19:14:00

标签: pandas python-xarray

我需要使用DataSetmean()重新取样,sum()为另一个数据变量。我使用这种有点麻烦的方法:

import xarray as xr
import numpy as np

airtemps = xr.tutorial.load_dataset('air_temperature')
airtemps = airtemps.sel(time=slice('2013-01-01', '2013-12-31'))
airtemps['air'] = airtemps.air - 273.15
airtemps['data'] = (('time', 'lat', 'lon'), np.random.random(airtemps.air.shape))

dataSummed = airtemps.data.resample('M', dim='time', how='sum')
airtemps_month = airtemps.resample('M', dim='time', how='mean')
airtemps_month['data_summed'] = dataSummed

这可以/应该以不同的方式完成吗?

1 个答案:

答案 0 :(得分:1)

您希望在DataArraysxarray的{​​{1}}集合称为Dataset。因此,请自行重新采样每个DataArray并构建一个新数据集。有很多方法可以做到这一点,这里有一个:

In [22]: ds = airtemps.air.resample('M', dim='time', how='mean').to_dataset()

In [23]: ds['data_summed'] = airtemps.data.resample('M', dim='time', how='sum')

In [24]: ds
Out[24]: 
<xarray.Dataset>
Dimensions:      (lat: 25, lon: 53, time: 12)
Coordinates:
  * lat          (lat) float32 75.0 72.5 70.0 67.5 65.0 62.5 60.0 57.5 55.0 ...
  * lon          (lon) float32 200.0 202.5 205.0 207.5 210.0 212.5 215.0 ...
  * time         (time) datetime64[ns] 2013-01-31 2013-02-28 2013-03-31 ...
Data variables:
    air          (time, lat, lon) float64 -28.68 -28.49 -28.48 -28.67 -28.99 ...
    data_summed  (time, lat, lon) float64 63.47 66.98 63.67 65.82 61.17 ...