熊猫 - 当频率不是多倍时重新采样?

时间:2016-11-24 11:15:33

标签: python pandas time-series resampling

我在1204天的每日频率上有一个时间系列。 我想在365D的基础上重新取样(通过求和),但时间系列跨越3,29 * 365D,而不是365D的倍数。 默认情况下,resample返回4行。

以下是原始数据:

DATE
2012-08-12    15350.0
2012-08-19    11204.0
2012-08-26    11795.0
2012-09-02    15160.0
2012-09-09     9991.0
2012-09-16    12337.0
2012-09-23    10721.0
2012-09-30     9952.0
2012-10-07    11903.0
2012-10-14     8537.0
               ...   
2015-09-27    14234.0
2015-10-04    17917.0
2015-10-11    13610.0
2015-10-18     8716.0
2015-10-25    15191.0
2015-11-01     8925.0
2015-11-08    13306.0
2015-11-15     8884.0
2015-11-22    11527.0
2015-11-29     6859.0

df.index.max() - df.index.min()
Timedelta('1204 days 00:00:00')

如果我申请:

df.resample('365D').sum()

我得到了:

DATE
2012-08-12    536310.0
2013-08-12    555016.0
2014-08-12    569548.0
2015-08-12    245942.0
Freq: 365D, dtype: float64

似乎最后一个垃圾箱是覆盖不到365天的垃圾箱。 如何强制重新采样以将其从结果中排除?

1 个答案:

答案 0 :(得分:2)

df.resample('365D')在索引的最低日开始采样。因此,最后一个垃圾箱几乎不会覆盖所有日子。跳过它

df.resample('365D').sum()[:-1]

您还可以考虑按年初或年末进行抽样

df.resample('A').sum()