我在 Pandas
中有一个数据框,其中包含分类信息和自由文本数据。
我想计算
特定字符串在自由文本数据中出现的次数,并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
最佳答案
比较文本并创建 bool 值,然后执行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
关于python - 计算 `groupby` 中字符串和 `pandas` 分类变量的出现次数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51581024/