我想按 "年龄 "对行进行分组,并返回1)每组有多少行,2)其中有多少行符合条件。
给定一个DataFrame,它看起来像这样。
Age Died
0 26 0
1 26 0
2 27 1
3 28 0
4 28 1
5 28 1
我想返回一个这样的DataFrame。
Age Count Died_Count
26 2 0
27 1 1
28 3 2
我已经尝试了无数种不同的组合 groupbys
诸如 groupby(['Age', 'Died'])
与不同的聚合器(sum
,count
)但似乎找不到一个成功的组合。谁能告诉我正确的方向?
你可以使用 namedagg。
(
df.groupby('Age')
.agg(Count=('Died', 'size'),
Died_count=('Died', 'sum'))
.reset_index()
)
假设你的数据框是 df
res=df.groupby("Age").agg({'Age': 'count', 'Died': 'sum'}).rename(columns={"Age":"Count"})
产出
Count Died
Age
26 2 0
27 1 1
28 3 2
你可以重置索引,并将Age也设置为一列。
res = res.reset_index(drop=False)
输出
Age Count Died
0 26 2 0
1 27 1 1
2 28 3 2