Pandas сгруппировать и указать, имеет ли столбец определенное значение - PullRequest
1 голос
/ 20 марта 2020

Есть много подобных вопросов, но ни один из них точно не решает мою проблему.

У меня есть pandas фрейм данных пользователей и местоположений. Пользователи могут иметь несколько мест. Я хочу преобразовать данные, чтобы у меня было одно местоположение в столбце для каждого пользователя. Для этого я хотел бы проверить, есть ли у пользователя «Нью-Йорк» в качестве местоположения, в противном случае укажите «Другое».

Итак, значения user1:

 user1 : New York

  user1 : Boston

вывод:

 user 1: New York

 user 1: New York

Тогда значения user2:

 user2: Boston

 user2: San Fran

вывод:

user2: Other

user2: Other

Я пробовал это:

group_by_user = sample['office_type'].groupby(sample['user']) 
sample.loc[:,'office_type2'] = ['New York' if ele == 'New York' else 'Other' for ele in sample['office_type']]

Но это не заполняет 'Нью-Йорк' в обеих строках, оно заполняется:

 user1: New York

 user1: Other

I хочу его заполнить

 user1: New York

 user1: New York

1 Ответ

1 голос
/ 20 марта 2020

IIU C Давайте сделаем transform с any, он будет groupby проверять, есть ли у него Нью-Йорк или нет, если это так, для всех строк с пользователем возвращаем True

s=sample['office_type'].eq('New York').groupby(sample['user']).transform('any')
sample.loc[:,'office_type']=s.map({True:'New York', False: 'Other'} )
...