как обусловить изменение в групповом режиме, основываясь только на одной строке группы - PullRequest
0 голосов
/ 23 января 2019

Я пытаюсь изменить столбец в groupby на основе условия в одной строке в groupby

У меня есть данные, которые выглядят так:

ID  year    month   type

1   2008    1       A

1   2008    2       NAN

1   2009    1       B

2   2003    3       B

2  2003     4       B

2  2003     8       A

3  2009     9       B 

Iхотите изменить данные следующим образом: для каждого идентификатора, если для января или февраля 2008 года есть строка со значением, отличным от NAN для типа, для всех строк дат с января 2008 года по декабрь 2009 года замените тип натип строки для Fab 2008, если она существует, или январь 2008 года, если она не

. Я пытался использовать .groupby (id) .isin ({'year': [2008], 'month':[1,2]}). Any (), но он просто генерирует новую переменную boolian, а не изменяет существующую переменную

1 Ответ

0 голосов
/ 23 января 2019

Почему бы не применять строгие типы для всех строк?Тогда ваша проблема упрощается до:

month_years = df.loc[:, ['year', 'month']]
updated_types = get_default_types(month_years)
updated_df = df.assign(type=updated_types)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...