计算pandas中字符串和groupby分类变量的出现次数

时间:2018-07-29 13:56:03

标签: pandas group-by count pandas-groupby

我在Pandas中有一个数据框,其中包含分类信息以及自由文本数据。 我想count在自由文本数据中出现特定字符串的次数,以及groupby每个分类变量的发生次数。

我一直在使用的一些策略如下,但并没有为我提供理想的结果。 我可以进行哪些修改才能达到最终的预期结果?

country freeText
USA yes
China   no
USA yes
Brazil  no
Brazil  no
China   no

df[df['freeText']=='no'].groupby('country').count()
df.groupby('country')['freeText'].str.contains('no').sum()

所需结果

USA 0
China   2
Brazil  2

2 个答案:

答案 0 :(得分:2)

比较文本并创建布尔值,然后执行groupby.sum-

df.freeText.eq('no').groupby(df.country).sum()

#country
#Brazil    2.0
#China     2.0
#USA       0.0
#Name: freeText, dtype: float64

或常见的groupby.agg/apply语法:

df.groupby('country').freeText.agg(lambda g: g.eq('no').sum())

#country
#Brazil    2
#China     2
#USA       0
#Name: freeText, dtype: int64

答案 1 :(得分:0)

您还可以使用pd.get_dummies一次获得全部(是/否)

pd.get_dummies(df, columns=['freeText']).groupby('country').sum()

        No  Yes
country     
Brazil  2   0
China   2   0
USA     0   2