我尝试将每周数据重新采样为4W,但是使用任意起始周,但是,基本选项无法完成工作。 例如:
index = pd.date_range('1/1/2020', periods=14, freq='W')
series = pd.Series(range(14), index=index)
print(series)
2020-01-05 0
2020-01-12 1
2020-01-19 2
2020-01-26 3
2020-02-02 4
2020-02-09 5
2020-02-16 6
2020-02-23 7
2020-03-01 8
2020-03-08 9
2020-03-15 10
2020-03-22 11
2020-03-29 12
2020-04-05 13
熊猫默认的4W垃圾箱:
print(series.resample('4W', label='left').sum())
2019-12-08 0
2020-01-05 10
2020-02-02 26
2020-03-01 42
2020-03-29 13
Freq: 4W-SUN, dtype: int64
我需要的是从1/19到2/9的4周之和,而不是上面的熊猫默认的bin。
答案 0 :(得分:0)
您必须将系列移位 2个位置。如果第一个累积值无关紧要,则可以删除前两个点:
print(series.iloc[2:].resample('4W', label='left').sum())
获得:
2019-12-22 2
2020-01-19 18
2020-02-16 34
2020-03-15 36
Freq: 4W-SUN, dtype: int64
但是随着第一行的消失,第一笔款项是错误的。正确的方法是在系列之前添加2行,对其求和,然后丢弃第一行:
print(series.append(pd.Series(0, index=pd.date_range(end = series.index[0], periods=3, freq='W')[:2])
).sort_index().resample('4W', label='left').sum()[1:])
您现在在每一行中都得到正确的值:
2019-12-22 3
2020-01-19 18
2020-02-16 34
2020-03-15 36
Freq: 4W-SUN, dtype: int64