我有几个每月的,以日期时间为索引的累积熊猫系列,我想对其进行累加,这样我就可以自己获取特定月份的值。
因此,每年的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数据。任何人都可以为您提供帮助或提出其他解决方案的建议吗?
答案 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
假设索引是日期列,而“值”是浮点数。