#python #pandas #group-by #transform
#python #pandas #группировка по #преобразование
Вопрос:
Я создал логический столбец на основе определенных мною критериев. Я хотел бы сделать еще один шаг вперед, подсчитав истинные значения для каждой группы.
У меня есть
group = df.groupby('id')
df.loc[:,'Match'] = (group['flag'].transform(lambda x: x.eq(0).any()))amp;(group['flag'].transform(lambda x: x.eq(1).any()))
Что дает мне значения True и False. Как я могу затем подсчитать количество истинных значений, которые заполняются для каждого идентификатора?
Пример данных:
id flag Match Count Match
123 0 True 3
123 1 True 3
123 1 True 3
567 0 False 0
567 0 False 0
Столбец соответствия создан выше, затем я хотел бы создать столбец соответствия Count.
Комментарии:
1. Вы должны предоставить некоторые образцы данных.
2. Я добавил несколько примеров данных @QuangHoang
3. Для идентификатора 123 есть 3 истины, однако в вашем столбце count match есть только 2 для идентификатора 123. Есть ли причина для этого? или это опечатка?
4. Это опечатка, я ее исправил @CameronRiddell
Ответ №1:
Это:
df['Count Match'] = df['Match'].astype(int).groupby(df['id']).transform('sum')
Комментарии:
1. В вашем назначении столбца отсутствует закрывающая скобка. Пытался отредактировать его для вас, но это всего лишь изменение на 1 символ.
df['Count Match']