Pandas重采样间隔大于索引范围时如何合并所有数据?
场景
我有如下Pandas时间序列数据:
| date | predicted1 |
|---|---|
| 2001-03-13 | 0.994756 |
| 2005-08-22 | 0.551661 |
| 2000-05-07 | 0.001396 |
我尝试按10年间隔重采样求和,代码如下:
sample = data.set_index(pd.DatetimeIndex(data['date'])).drop('date', axis=1)['predicted1'] sample.resample('10Y').sum()
得到的结果却把数据分成了两组:
| date | |
|---|---|
| 2000-12-31 | 0.001396 |
| 2010-12-31 | 1.546418 |
问题
如何让所有数据归到同一个10年间隔组?期望结果如下:
| date | |
|---|---|
| 2000-12-31 | 1.5478132011506138 |
解决方法
方法1:指定重采样的起始原点
通过resample的origin参数,手动设置10年周期的起始点,比如指定为2000年年初,这样所有数据都会被划入以2000年开头的10年区间:
sample.resample('10Y', origin='2000-01-01').sum()
如果想适配任意数据集,也可以自动取数据中最早日期的当年年初作为起始点:
origin_date = sample.index.min().replace(month=1, day=1) sample.resample('10Y', origin=origin_date).sum()
方法2:直接求和后重置索引
如果只需要合并所有数据并指定目标日期,也可以直接对序列求和,再手动设置索引:
pd.Series([sample.sum()], index=pd.DatetimeIndex(['2000-12-31']))
内容的提问来源于stack exchange,提问作者Владислав Черкасов
相关产品推荐
相关产品推荐

