Pandas: добавить столбец bool, если два поля совпадают в данных - PullRequest
1 голос
/ 30 марта 2020

Я новичок в pandas и немного борюсь. У меня есть два больших датафрейма с несколькими строками 100000. Я извлек два столбца обоих и хочу добавить bool в первый набор данных, если два поля точно совпадают в обоих фреймах данных. Как пример:

   0  1
0  a  b
1  a  c
2  a  d
3  a  e
4  b  a
5  b  b
6  b  c
7  b  d
######
   0  1
0  a  b
1  a  c
2  d  e
3  k  g
4  b  a

Я ожидаю результата:

   0  1  2
0  a  b  True
1  a  c  True
2  a  d  False
3  a  e  False
4  b  a  True
5  b  b  False
6  b  c  False
7  b  d  False

Я пробовал разные вещи, но ни одна из них не работала:

t3 = (t1[[0]].isin(t2[[0]])) & (t1[[1]].isin(t2[[1]]))

    0   1
0 NaN NaN
1 NaN NaN
2 NaN NaN
3 NaN NaN
4 NaN NaN
5 NaN NaN
6 NaN NaN
7 NaN NaN

Я думаю решение очень простое, но я не могу найти, как это сделать.

Большое спасибо!

1 Ответ

3 голосов
/ 30 марта 2020

Используйте DataFrame.merge с левым соединением и без параметра on для объединения по пересечению столбцов в обоих DataFrame с, затем rename столбец и проверки, если both значения по Series.eq:

df = df1.merge(df2, indicator=True, how='left').rename(columns={'_merge':2})
df[2] = df[2].eq('both')
print (df)
   0  1      2
0  a  b   True
1  a  c   True
2  a  d  False
3  a  e  False
4  b  a   True
5  b  b  False
6  b  c  False
7  b  d  False
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...