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

标签 python pandas group-by count pandas-groupby

我在 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/

相关文章:

python - 在 python 中优化 Euler-Maruyama 实现

python - 使用 python 选择特定的 anchor 标签

python - 如何用另一个数据帧列切片中的值替换数据帧列的切片?

python - 条件避免无限python pandas的划分过程

python - 如何在 xpath 命令中使用 python scrapy 进行网络抓取的任意值

python - Django 在模型内调用另一个模型的 upload_to

python - 在现有表中创建新列并使用 python 更新列

sql - 简单的 sql(我希望!)

mysql 按天分组并计数,然后仅过滤每天的最高值

mysql - SQL 查询除外