熊猫在特定日期之前重新采样

时间:2020-07-27 05:22:25

标签: python pandas base

我尝试将每周数据重新采样为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。

1 个答案:

答案 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