Pandas DataFrame Groupby: 如何计算满足条件的分组行数。

问题描述 投票:0回答:1

我想按 "年龄 "对行进行分组,并返回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)但似乎找不到一个成功的组合。谁能告诉我正确的方向?

python pandas pandas-groupby
1个回答
4
投票

你可以使用 namedagg。

(
    df.groupby('Age')
    .agg(Count=('Died', 'size'),
        Died_count=('Died', 'sum'))
    .reset_index()
)

2
投票

假设你的数据框是 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
© www.soinside.com 2019 - 2024. All rights reserved.