【问题标题】:Python xarray: Extract first and last time value within each month of a timeseriesPython xarray:在时间序列的每个月内提取第一个和最后一个时间值
【发布时间】:2016-01-14 12:04:14
【问题描述】:

编辑 2016-01-24:此行为来自 xarray 中的错误(当时称为“xray”)。请参阅下面 skc 的answer

我有一个xarray.DataArray,其中包含跨越多年的每日数据。我想计算时间序列中每个月的数据的时间趋势。我可以使用resample 获得分子,即每个月的数量变化。假设arr是我的xarray.DataArray对象,时间坐标名为'time'

data_first = arr.resample('1M', 'time' how='first')
data_last = arr.resample('1M', 'time' how='last')

然后data_last - data_first 给了我那个月的变量变化。

但是,这不适用于 time=arr.time 对象本身:'first''last' kwarg 值产生相同的值,即该月的最后一天。另外,我不能使用groupby 方法,因为当我想要时间序列中每个月内的第一个和最后一个时间值时,使用time.month 将所有一月、所有二月等组合在一起.

在 xarray 中是否有一种简单的方法可以做到这一点?我怀疑是的,但我是这个包的新手,而且失败得很惨。

【问题讨论】:

标签: python datetime time-series python-xarray


【解决方案1】:

由于'time' 是您提供的 DataArray 中的一个坐标,目前不可能1直接对其进行重新采样。一种可能的解决方法是使用时间坐标值作为变量创建一个新的 DataArray(仍然与相同的坐标 'time' 链接)

如果 arr 是您开始的 DataArray,我建议如下:

time = xray.DataArray(arr.time.values, coords=[arr.time.values], dims=['time'])
time_first = time.resample('1M', 'time', how='first')
time_last = time.resample('1M', 'time', how='last')
time_diff = time_last - time_first

1这不是预期的行为——请参阅上面斯蒂芬的评论。

更新:Pull request 648 已修复此问题,因此不再需要使用解决方法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-06-12
    • 1970-01-01
    • 2021-01-19
    • 1970-01-01
    • 2018-09-13
    • 2015-01-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多