gpt4 book ai didi

python - pandas groupby 计算字符串在列上的出现次数

转载 作者:太空狗 更新时间:2023-10-29 18:04:30 25 4
gpt4 key购买 nike

我想计算一个字符串在分组的 pandas 数据框列中的出现次数。

假设我有以下数据框:

catA    catB    scores
A X 6-4 RET
A X 6-4 6-4
A Y 6-3 RET
B Z 6-0 RET
B Z 6-1 RET

首先,我想按 catAcatB 分组。对于这些组中的每一个,我想计算 scores 列中 RET 的出现次数。

结果应该是这样的:

catA    catB    RET
A X 1
A Y 1
B Z 2

按两列分组很容易:grouped = df.groupby(['catA', 'catB'])

但下一步是什么?

最佳答案

调用applygroupby 的“分数”列中对象并使用矢量化 str方法 contains ,使用它来过滤 group 并调用 count :

In [34]:    
df.groupby(['catA', 'catB'])['scores'].apply(lambda x: x[x.str.contains('RET')].count())

Out[34]:
catA catB
A X 1
Y 1
B Z 2
Name: scores, dtype: int64

要分配为列使用 transform以便聚合返回一个序列,其索引与原始 df 对齐:

In [35]:
df['count'] = df.groupby(['catA', 'catB'])['scores'].transform(lambda x: x[x.str.contains('RET')].count())
df

Out[35]:
catA catB scores count
0 A X 6-4 RET 1
1 A X 6-4 6-4 1
2 A Y 6-3 RET 1
3 B Z 6-0 RET 2
4 B Z 6-1 RET 2

关于python - pandas groupby 计算字符串在列上的出现次数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31649669/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com