我有一个每月含税的pandas DataFrame。
>> df
2014-08-01 0.25
2014-07-01 0.01
2014-06-01 0.40
2014-05-01 0.46
2014-04-01 0.67
2014-03-01 0.92
2014-02-01 0.69
2014-01-01 0.55
2013-12-01 0.92
2013-11-01 0.54
2013-10-01 0.57
2013-09-01 0.35
2013-08-01 0.24
2013-07-01 0.03
2013-06-01 0.26
.
.
.
我需要使用最后三个值创建一个包含累计税的新列。例如:
>> df
2014-08-01 0.25 0.66
2014-07-01 0.01 0.87
2014-06-01 0.40 1.54
2014-05-01 0.46 2.06
2014-04-01 0.67 2.30
2014-03-01 0.92
2014-02-01 0.69
2014-01-01 0.55
.
.
.
(1.0025 * 1.0001 * 1.0040 = 1.0066 - >(1.0066 - 1)/ 100 - > 0.66
(1.0001 * 1.0040 * 1.0046 = 1.0066 - >(1.0087 - 1)/ 100 - > 0.87
在熊猫中最简单的方法是什么?
答案 0 :(得分:2)
内置方法rolling_sum
,我也会在最后调用shift
,以便按照您想要的方式对齐:
In [14]:
df['rolling_sum']= pd.rolling_sum(df['value'],window=3).shift(-2)
df
Out[14]:
time value rolling_sum
0 2014-08-01 0.25 0.66
1 2014-07-01 0.01 0.87
2 2014-06-01 0.40 1.53
3 2014-05-01 0.46 2.05
4 2014-04-01 0.67 2.28
5 2014-03-01 0.92 2.16
6 2014-02-01 0.69 2.16
7 2014-01-01 0.55 2.01
8 2013-12-01 0.92 2.03
9 2013-11-01 0.54 1.46
10 2013-10-01 0.57 1.16
11 2013-09-01 0.35 0.62
12 2013-08-01 0.24 0.53
13 2013-07-01 0.03 NaN
14 2013-06-01 0.26 NaN