试着和Pandas产生一个滚动的总和

2024-04-27 04:04:30 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个简单的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。我尝试使用以下方法,但给出了错误的答案:

df.B = pd.rolling_sum(df.A + df.B, 1)

Tags: columnsdataframedfdateindex规则rangelist
1条回答
网友
1楼 · 发布于 2024-04-27 04:04:30

试试^{}

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

相关问题 更多 >