![](/img/trans.png)
[英]Add index in pandas based on each occurance of another column specific value
[英]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.groupby
和cumcount
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.