дата группировки и проверьте, равны ли значения в нескольких столбцах - PullRequest
0 голосов
/ 10 февраля 2020

У меня есть кадр данных в следующем формате

      X       Y        date
0   10.0     NaN  2018-12-27
1   20.0    40.0  2018-12-27
2   15.0     NaN  2018-12-24
3    NaN    20.0  2018-12-27

Я пытаюсь сгруппировать по дате и проверить, равно ли значение в X значению в Y для указанной даты c.

Я попробовал приведенную ниже логику c, но она не работает.

are_equal = df.groupby('date').apply(lambda g: (g.X == g.Y).sum())
df['are_equal'] = df.date.map(are_equal)

Требуемый вывод - флаг, показывающий, что индексы 1 и 3 равны.

1 Ответ

0 голосов
/ 10 февраля 2020

Использование Series.isin с:

f = lambda g: g.X.fillna('no match').isin(g.Y) | g.Y.fillna('no match').isin(g.X)
df['are_equal'] = df.groupby('date', group_keys=False).apply(f)
print (df)
      X     Y        date  are_equal
0  10.0   NaN  2018-12-27      False
1  20.0  40.0  2018-12-27       True
2  15.0   NaN  2018-12-24      False
3   NaN  20.0  2018-12-27       True
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...