Pandas 每双月在偶数月重新采样

问题描述 投票:0回答:1

我有以下每日数据:

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 月分组在一起。

python pandas
1个回答
0
投票

你应该使用

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’都有默认值 ‘正确’。

© www.soinside.com 2019 - 2024. All rights reserved.