尝试使用Pandas生成rolling_sum

时间:2015-10-10 11:04:38

标签: python pandas

我有一个简单的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)

1 个答案:

答案 0 :(得分:2)

尝试expanding_sum

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