Как создать новый столбец с условным числом в groupby pandas dataFrame - PullRequest
1 голос
/ 07 февраля 2020

У меня есть DataFrame с несколькими функциями, что-то вроде этого:

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

1 Ответ

2 голосов
/ 07 февраля 2020
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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...