я хочу, чтобы соответствовать два столбца dataframe в Python - PullRequest
0 голосов
/ 27 января 2019

У меня есть два фрейма данных df1 (запись 35k) и df2 (запись 100k).В df1 ['col1'] и df2 ['col3'] у меня есть уникальные идентификаторы.Я хочу сопоставить df1 ['col1'] с df2 ['col3'].Если они совпадают, я хочу обновить df1 еще одним столбцом, скажем, df1 ['Match'] со значением true, а если не совпадает, обновить со значением False.Я хочу сопоставить это ИСТИННОЕ и Ложное значение только с совпадающей и несоответствующей записью.

Я использую функцию .isin(), получаю правильное совпадение и не рассчитываю количество совпадений, но не могу отобразить их правильно.

Match = df1['col1'].isin(df2['col3'])
df1['match'] = Match

Я также использовал функцию слияния, передавая параметр how=right, но не получил результатов.

Ответы [ 2 ]

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

Вы можете просто сделать следующее:

df1['Match'] = df1['col1'].isin(df2['col3'])

Например:

import pandas as pd
data1 = [1,2,3,4,5]
data2 = [2,3,5]
df1 = pd.DataFrame(data1, columns=['a'])
df2 = pd.DataFrame(data2,columns=['c'])
print (df1)
print (df2)
df1['Match'] = df1['a'].isin(df2['c']) # if matches it returns True else False
print (df1)

Вывод:

  a
0  1
1  2
2  3
3  4
4  5

   c
0  2
1  3
2  5

   a  Match
0  1  False
1  2   True
2  3   True
3  4  False
4  5   True
0 голосов
/ 27 января 2019

Использование df.loc индексирование:

df1['Match'] = False
df1.loc[df1['col1'].isin(df2['col3']), 'Match'] = True
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...