如何在分组方式熊猫数据帧中创建具有条件计数的新列



我有一个具有一些功能的数据帧,如下所示:

GEST    GERE    HOL
ONE1    1234    1
ONE1    6797    0
TWO2    6352    1
TWO2    5530    1

我想按GEST分组并创建一个新列Count如果HOL == 1并将其分配给GEST

GEST    GERE    HOL    Count
ONE1    1234    1      1
ONE1    6797    0      1
TWO2    6352    1      2
TWO2    5530    1      2
df['Count']=df.groupby('GEST')['HOL'].transform('sum')

输出

GEST    GERE    HOL    Count
ONE1    1234    1      1
ONE1    6797    0      1
TWO2    6352    1      2
TWO2    5530    1      2

如果输入是分类值,如"是/否",如下所示

GEST    GERE    HOL
0   ONE1    1234    Yes
1   ONE1    6797    No
2   TWO2    6352    Yes
3   TWO2    5530    Yes

您可以使用下面的代码来获取所需的输出

df['Count']=df.groupby('GEST')['HOL'].transform(lambda x : x.loc[x=='Yes'].count())

输出

GEST    GERE    HOL     Count
0   ONE1    1234    Yes     1
1   ONE1    6797    No      1
2   TWO2    6352    Yes     2
3   TWO2    5530    Yes     2

最新更新