使用2列的累计和

2024-04-26 20:45:49 发布

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

我正在尝试创建一个列,使用2列进行累计和,请参阅我尝试做什么的示例:@信仰阿基奇

  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

我已经使用了下面的代码,但是我的计算机不断崩溃,我不确定是代码还是计算机。如有任何帮助,我们将不胜感激:

^{pr2}$

更新;我也使用了下面的代码,它起作用了,并说退出代码0。但也有一些警告。在

df_2['cum_sum'] =df_2.groupby(['words'])['count'].cumsum()

Tags: the代码示例dfindex计算机请参阅sum
2条回答

你快到了,伊恩!在

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

如果这在你的更大的数据集上失败了,请评论,我们将研究一个可能更精确的版本。在

如果我们只需要考虑“words”列,我们可能需要遍历单词的唯一值

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()}))

上述结果将导致:

^{pr2}$

相关问题 更多 >