python - Pandas - 在过滤后的数据帧上应用聚合

标签 python pandas

GroupBy 一列并根据过滤值聚合其中一列。

就像下面给出的例子一样,我想计算每种“种类”动物中性别为“雄性”的动物的数量

import pandas as pd
df = pd.DataFrame({'kind': ['cat', 'dog', 'cat', 'dog'],
                'height': [9.1, 6.0, 9.5, 34.0],
                'gender': ['male', 'female', 'female', 'female']})
df.groupby('kind').agg({'height': 'min', 'gender': lambda g: (g == 'male').count()})

我得到的输出(这是错误的)

kind      height     gender
cat       9.1        2
dog       6.0        2

预期输出:

kind      height     gender
cat       9.1        1
dog       6.0        0

最佳答案

您可以使用 sum() 而不是 count()。

df.groupby('kind').agg({'height': 'min', 'gender': lambda g: (g == 'male').sum()})

关于python - Pandas - 在过滤后的数据帧上应用聚合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57279349/

相关文章:

python - Pandas Dataframe 到带有元组的列表字典

python pandas 计算平均值

python - 在 panda 数据框中插入复选框

python - 使用 .loc 访问器的 pandas 日期时间索引的 bool 掩码

python - 调用 Flask app.run 后,我可以让 Python 代码继续执行吗?

python - 生成的 Azure SAS 下载链接上的签名不匹配?

python - python中插入节点替换前一个节点

python - Flask Button 在不刷新页面的情况下运行 Python?

python - 在 pandas 中追加到现有的 df 中,而不更改 df 的 id?

python - 如何从 Pandas 数据框值中计算特定日期间隔内的值数?