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()})
推荐阅读
- api - 有没有办法在 Paypal 中以 $$$ 的总金额在 X 个月内进行分期付款?
- javascript - 在 JS 循环/数组中通过索引创建新值
- sql - 用于选择不存在的记录的 SQL 查询
- python - Python多类继承:调用子类的变量
- python - 如何在 Python 类中删除 self 的隐式传递?
- c# - 如何用正号(+)和美元(符号)格式化用逗号分隔的数字?
- python - 如何修复IndexError:python中的字符串索引超出范围
- java - 无法运行 java 文件(修复类路径时遇到问题)
- python-3.x - 如何修复:提交 Python 代码时,预期为 2 输出,但在 PASTA 上得到 0
- lightbox2 - 如何在 Lightbox v2.10.0 中链接 Youtube 视频