首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >pandas groupby count字符串出现在列上

pandas groupby count字符串出现在列上
EN

Stack Overflow用户
提问于 2015-07-27 17:37:17
回答 1查看 16.7K关注 0票数 13

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

假设我有以下数据帧:

代码语言:javascript
运行
复制
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的出现次数。

结果应该如下所示:

代码语言:javascript
运行
复制
catA    catB    RET
A       X       1
A       Y       1
B       Z       2

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

但是下一步呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-07-27 17:43:03

groupby对象的'scores‘列调用apply,并使用矢量化str方法contains,使用此方法过滤group并调用count

代码语言:javascript
运行
复制
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对齐的序列:

代码语言:javascript
运行
复制
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
票数 18
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31649669

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档