Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 列上的按计数字符串出现次数_Python_Pandas_Count_Group By_Dataframe - Fatal编程技术网

Python 列上的按计数字符串出现次数

Python 列上的按计数字符串出现次数,python,pandas,count,group-by,dataframe,Python,Pandas,Count,Group By,Dataframe,我想计算分组数据帧列中字符串的出现次数 假设我有以下数据帧: 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 首先,我想按catA和catB进行分组。对于每一组,我想在得分列中计算RET的发生率 结果应该如下所示: catA catB RET A

我想计算分组数据帧列中字符串的出现次数

假设我有以下数据帧:

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
首先,我想按
catA
catB
进行分组。对于每一组,我想在
得分
列中计算
RET
的发生率

结果应该如下所示:

catA    catB    RET
A       X       1
A       Y       1
B       Z       2
通过两列进行分组很容易:
grouped=df.groupby(['catA','catB'])

但下一步是什么?

调用对象上的“分数”列并使用矢量化方法,使用此方法过滤
,然后调用:

要指定为列,请使用,以便聚合返回其索引与原始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

这是否永久存储在新列中?如果不是,如何将其存储为新列?我想做的是,如果计数大于某个数字,我只想显示输出。如何搜索两个不同的字符串?所以str可以包含
RET
ASDF
?然后我需要一个正则表达式,对吗?使用
x.str.contains('RET | ASDF')
你还应该发布你的全部要求,更新你的问题,并将你的问题保留为每个问题一个问题,而不是增加你的问题抱歉。我在提问时不知道这个要求。现在没事了……不用担心,但你必须明白,SO不是一个论坛网站,它是一个Q+a网站,所以为了帮助他人,你需要用足够的信息来全面定义你的问题,以帮助所有人。如果我的答案完全解决了您的问题,那么您可以接受它,我的答案左上角将有一个空勾号
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