繁体   English   中英

计算每个值的出现次数,并对熊猫中的另一列求和

[英]Compute number of occurance of each value and Sum another column in Pandas

我有一个熊猫数据框,其中有一些列。 我感兴趣的专栏是这样的,

df['col'] = ['A', 'A', 'B', 'C', 'B', 'A']

我想再说一列col_count ,以便它显示从该索引到该列结尾的col计数值。

列中的第A应该具有值3,因为该索引中的列中出现了3个A 第二个A将具有值2 ,依此类推。

最后,我想得到以下结果,

    col     col_count
0   A   3
1   A   2
2   B   2
3   C   1
4   B   1
5   A   1

如何在熊猫中有效地做到这一点? 我能够通过遍历数据框并为切片的数据框对该值进行唯一计数来做到这一点。

有没有一种有效的方法可以做到这一点? 没有循环的东西比较可取。

问题的另一部分是,我还有col这样的另一列,

df['X'] = [10, 40, 10, 50, 30, 20]

我想用对列col进行计数的相同方式来总结此列。

例如,在索引0处,我将得到10 + 40 + 20。 在索引1,总和为40 +20。简而言之,我想对另一列求和而不是计数。

结果将是这样,

    col     col_count   X   X_sum
0   A   3   10  70
1   A   2   40  60
2   B   2   10  40
3   C   1   50  50
4   B   1   30  30
5   A   1   20  20

使用pandas.Series.groupbycumcount cumsum

g = df[::-1].groupby('col')
df['col_count'] = g.cumcount().add(1)
df['X_sum'] = g['X'].cumsum()
print(df)

输出:

  col   X  col_count  X_sum
0   A  10          3     70
1   A  40          2     60
2   B  10          2     40
3   C  50          1     50
4   B  30          1     30
5   A  20          1     20

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM