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/