取消对熊猫系列中的时间序列数据进行求和

时间:2018-07-20 16:12:12

标签: python pandas time-series

我有几个每月的,以日期时间为索引的累积熊猫系列,我想对其进行累加,这样我就可以自己获取特定月份的值。

因此,每年的1月为1月,2月为1月+ 2月,3月为1月+ 2月+ 3月,依此类推,直到下一年再次从1月开始。

有些尴尬的是,这些系列从2月开始。

这是一个示例系列:

2016-02-29     112.3
2016-03-31     243.0
2016-04-30     360.1
2016-05-31     479.5
2016-06-30     643.0
2016-07-31     757.6
2016-08-31     874.5
2016-09-30    1051.8
2016-10-31    1203.4
2016-11-30    1358.3
2016-12-31    1573.5
2017-01-31      75.0
2017-02-28     140.5
2017-03-31     290.4
2017-04-30     416.6
2017-05-31     548.2
2017-06-30     746.6
2017-07-31     863.5
2017-08-31     985.4
2017-09-30    1160.1
2017-10-31    1302.5
2017-11-30    1465.7
2017-12-31    1694.1
2018-01-31      74.0
2018-02-28     146.3
2018-03-31     300.9
2018-04-30     421.9
2018-05-31     564.1
2018-06-30     771.4

我认为一种方法是使用df.diff()获取除Jan以外的所有内容的大部分差异,用NaN替换不正确的Jan值,然后执行df.update(original df)进行填充具有正确值的NaN。

我无法用NaN替换Jan数据。任何人都可以为您提供帮助或提出其他解决方案的建议吗?

1 个答案:

答案 0 :(得分:0)

我会用groupby + diff + fillna解决这个问题:

df.asfreq('M').groupby(pd.Grouper(freq='Y')).diff().fillna(df)

            Value
2016-02-29  112.3
2016-03-31  130.7
2016-04-30  117.1
2016-05-31  119.4
2016-06-30  163.5
2016-07-31  114.6
2016-08-31  116.9
2016-09-30  177.3
2016-10-31  151.6
2016-11-30  154.9
2016-12-31  215.2
2017-01-31   75.0
2017-02-28   65.5
2017-03-31  149.9
2017-04-30  126.2
2017-05-31  131.6
2017-06-30  198.4
2017-07-31  116.9
2017-08-31  121.9
2017-09-30  174.7
2017-10-31  142.4
2017-11-30  163.2
2017-12-31  228.4
2018-01-31   74.0
2018-02-28   72.3
2018-03-31  154.6
2018-04-30  121.0
2018-05-31  142.2
2018-06-30  207.3

假设索引是日期列,而“值”是浮点数。