Как сгруппировать и суммировать критерии - PullRequest
0 голосов
/ 10 июля 2020

У меня есть фрейм данных, как показано ниже

FAMILY   TYPE   REMARKS
A        A1     Valid
A        A1     Invalid
A        A1     Invalid
A        B2     Invalid
A        B2     Valid
A        B2     Valid

Как мне использовать groupby, чтобы он выглядел

FAMILY   TYPE   VALID   INVALID
A        A1     1       2
A        B2     2       1

Я пробовал

df['VALID'] = df.groupby('TYPE')['REMARKS'].apply(lambda remark: remark == 'Valid')

но результат не группируется в 2 строки, как я могу это сделать?

Ответы [ 2 ]

1 голос
/ 10 июля 2020

Мы делаем crosstab + reset_index, он будет засчитан по двум столбцам СЕМЬЯ и ТИП над ЗАМЕЧАНИЯ

df=pd.crosstab([df.FAMILY, df.TYPE], df.REMARKS).reset_index()
1 голос
/ 10 июля 2020
dfg = df.groupby(['FAMILY', 'TYPE', 'REMARKS']).agg({'REMARKS': 'count'}).unstack(level=2)
dfg.columns = [n[1] for n in dfg.columns]  # get rid of multi-level column name
dfg.reset_index(inplace=True)

# display(dfg)
  FAMILY TYPE  Invalid  Valid
0      A   A1        2      1
1      A   B2        1      2
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...