我在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
答案 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