我有以下每日数据:
1983-03-30 0.001224
1983-03-31 -0.003741
1983-04-04 0.005121
1983-04-05 0.009171
1983-04-06 0.006395
1983-04-07 0.009030
1983-04-08 0.006961
1983-04-11 -0.003950
1983-04-12 0.018837
1983-04-13 -0.000324
...
我想使用每两个月一次的频率重新采样。所以我这样做:
s.resample('2ME').agg('last') # Use '2M' for older versions of Pandas
这会产生以下结果:
1983-03-31 -0.003741
1983-05-31 0.001987
1983-07-31 0.005657
1983-09-30 -0.007843
1983-11-30 -0.005444
1984-01-31 0.003011
1984-03-31 -0.000324
1984-05-31 0.000649
1984-07-31 -0.001447
1984-09-30 0.002705
但是,我想对 (3,4)、(5,6)、(7,8) 等进行分组,所以我想要一个时间戳为的系列:
1983-04-30
1983-06-31
1983-08-31
重现此内容:
index = pd.date_range(start='1983-03-28', end='1984-01-01', freq='B')
s = pd.Series(data=np.random.randn(len(index)), index=index)
如何告诉重采样以偶数月分组?或者更好的是,在分组时始终采用前两个,而不是像上面的情况那样采用前 1 个 - 它先将 3 月单独分组,然后将 4 月和 5 月分组在一起,而不是将 3 月和 4 月分组在一起。
你应该使用
closed='left'
:
s.resample('2M', closed='left').agg('last')
输出:
1983-04-30 2.269755
1983-06-30 0.462782
1983-08-31 0.906045
1983-10-31 -0.098453
1983-12-31 1.336528
Freq: 2M, dtype: float64
resample
文档:
close {‘right’, ‘left’}, 默认 None bin 间隔的哪一侧 关闭。除以下频率偏移外,所有频率偏移的默认值为“左” ‘ME’、‘YE’、‘QE’、‘BME’、‘BA’、‘BQE’和‘W’都有默认值 ‘正确’。