我正在尝试创建一个使用2列进行累计求和的列,请参阅我尝试做的示例:@Faith Akici
index lodgement_year words sum cum_sum
0 2000 the 14 14
1 2000 australia 10 10
2 2000 word 12 12
3 2000 brand 8 8
4 2000 fresh 5 5
5 2001 the 8 22
6 2001 australia 3 13
7 2001 banana 1 1
8 2001 brand 7 15
9 2001 fresh 1 6
我使用下面的代码,但是我的电脑一直在崩溃,我不确定是代码还是计算机。任何帮助将不胜感激:
df_2['cumsum']= df_2.groupby('lodgement_year')['words'].transform(pd.Series.cumsum)
更新;我也使用下面的代码,它工作,并说退出代码0。但有一些警告。
df_2['cum_sum'] =df_2.groupby(['words'])['count'].cumsum()
答案 0 :(得分:1)
你快到了,伊恩!
cumsum()
方法计算Pandas列的累积总和。您正在寻找适用于分组words
的内容。因此:
In [303]: df_2['cumsum'] = df_2.groupby(['words'])['sum'].cumsum()
In [304]: df_2
Out[304]:
index lodgement_year words sum cum_sum cumsum
0 0 2000 the 14 14 14
1 1 2000 australia 10 10 10
2 2 2000 word 12 12 12
3 3 2000 brand 8 8 8
4 4 2000 fresh 5 5 5
5 5 2001 the 8 22 22
6 6 2001 australia 3 13 13
7 7 2001 banana 1 1 1
8 8 2001 brand 7 15 15
9 9 2001 fresh 1 6 6
如果您的较大数据集失败,请发表评论,我们将开发一个可能更有效的版本。
(顺便说一下,我没有得到通知,因为你的名字写了一个错字:法提赫,而不是信仰:))
答案 1 :(得分:0)
如果我们只需要考虑列'单词',我们可能需要循环单词的唯一值
for unique_words in df_2.words.unique():
if 'cum_sum' not in df_2:
df_2['cum_sum'] = df_2.loc[df_2['words'] == unique_words]['sum'].cumsum()
else:
df_2.update(pd.DataFrame({'cum_sum': df_2.loc[df_2['words'] == unique_words]['sum'].cumsum()}))
上面的将导致:
>>> print(df_2)
lodgement_year sum words cum_sum
0 2000 14 the 14.0
1 2000 10 australia 10.0
2 2000 12 word 12.0
3 2000 8 brand 8.0
4 2000 5 fresh 5.0
5 2001 8 the 22.0
6 2001 3 australia 13.0
7 2001 1 banana 1.0
8 2001 7 brand 15.0
9 2001 1 fresh 6.0