使用库xarray(python)进行groupby后的时间维度错误

时间:2017-07-11 16:16:27

标签: python xarray

我的问题是我想在python中使用xarray-library的简单功能,但是在聚合数据的情况下我遇到了时间维度的问题。

我打开了一个数据集,其中包含2013年的每日数据: float: left;

该文件的内容是:

datset=xr.open_dataset(filein)

当我现在使用groupby方法计算月均值时,时间维度被销毁:

<xarray.Dataset>
Dimensions:       (bnds: 2, rlat: 228, rlon: 234, time: 365)
Coordinates:
  * rlon          (rlon) float64 -28.24 -28.02 -27.8 -27.58 -27.36 -27.14 ...
  * rlat          (rlat) float64 -23.52 -23.3 -23.08 -22.86 -22.64 -22.42 ...
  * time          (time) datetime64[ns] 2013-01-01T11:30:00 ...
Dimensions without coordinates: bnds
Data variables:
    rotated_pole  |S1 ''
    time_bnds     (time, bnds) float64 1.073e+09 1.073e+09 1.073e+09 ...
    ASWGLOB_S     (time, rlat, rlon) float64 nan nan nan nan nan nan nan nan ...
Attributes:
    CDI:                       Climate Data Interface version 1.7.0 (http://m...
    Conventions:               CF-1.4
    references:                http://www.clm-community.eu/
    NCO:                       4.6.7
    CDO:                       Climate Data Operators version 1.7.0

现在我有一个月份维度的时间维度,而不是1到12之间的值。这是&#39;意味着&#39;的副作用。 - 功能?只要我不使用这个均值函数,就会保留时间变量。

我做错了什么?文档和本论坛中给出的示例似乎有不同的行为。在那里,除了使用每个月的第一个日期外,保留时间戳。

我可以重新发明旧时代的维度吗?如果我想要显示月中的时间戳和“时间点”&#39;表示每个平均值的间隔,即月初,月末。

感谢您的帮助,Ronny

1 个答案:

答案 0 :(得分:2)

您所描述的是预期的行为:当您<{> 1}} 汇总并应用{strong>缩减功能时,.groupby,您汇总的维度被指数取代 - 在这种情况下是12个月。

想象一下,你有一个多年的时间序列。然后,mean会为您提供中每个月的平均值(例如,所有“Januaries”合并为一个平均值)。

您确定不想采用月平均值吗?然后ds.groupby('time.month').mean(dim='time')就是您所需要的,它实际上会为您提供适当的时间维度。

但是,如果您 想要多年聚合平均值,但想要一个合适的ds.resample(time='1m').mean(dim='time')维度,那么您可以替换您的新{{1}带有time索引的索引,如:

month

其中time是您选择作为月度索引年份的某一年。