我有一个简单的dataFrame
常规样本:
dates = pd.date_range('20150101', periods=6)
df = pd.DataFrame([1,2,3,4,5,6], index=dates, columns=list('A'))
df.loc[:,'B'] = 0
df.iloc[0,1] =10
df
Out[119]:
A B
2015-01-01 1 10
2015-01-02 2 0
2015-01-03 3 0
2015-01-04 4 0
2015-01-05 5 0
2015-01-06 6 0
我想要做的是使用Pandas中的rolling_sum
函数在B列中创建值,以便得到下表:
A B
2015-01-01 1 11
2015-01-02 2 13
2015-01-03 3 16
2015-01-04 4 20
2015-01-05 5 25
2015-01-06 6 31
即B(i+1) = A(i+1) + B(i)
- 注意在B(0)处有一个特殊情况,因为初始值为10.我尝试使用以下内容,但它给出了错误的答案:< / p>
df.B = pd.rolling_sum(df.A + df.B, 1)
答案 0 :(得分:2)
In [15]: df
Out[15]:
A B
2015-01-01 1 10
2015-01-02 2 0
2015-01-03 3 0
2015-01-04 4 0
2015-01-05 5 0
2015-01-06 6 0
In [16]: df.B = pd.expanding_sum(df.A) + df.B[0]
In [17]: df
Out[17]:
A B
2015-01-01 1 11
2015-01-02 2 13
2015-01-03 3 16
2015-01-04 4 20
2015-01-05 5 25
2015-01-06 6 31