Найти совпадающие значения в двух фреймах данных панд и вернуть значение из совпадающей строки - PullRequest
0 голосов
/ 22 января 2019

Трудно было сформулировать этот вопрос так, чтобы он был ясным и точным, поэтому, надеюсь, что приведенное ниже поможет пролить больше света на мою проблему.

У меня есть два кадра данных панд, упрощенные для этого примера, ониявляются:

df1 = 
'CENSUS_ID'  
60014001001
60014002001

df2 = 
'GEO_ID'    'MED_INCOME'
60014001001   177417
60014002001   166313
60014002002   132400
60014003001   161964

Я хочу добавить в df1 столбец с именем 'MED_INCOME', найдя соответствующий GEO_ID в df2 и вернув значение 'MED_INCOME'.Несмотря на то, что эти кадры данных упрощены, фактическая длина df1 может составлять сотни строк, а длина df2 - десятки тысяч строк.Так что, хотя я мог бы легко настроить это для итераций, чтобы найти совпадения, это не идеально, потому что это очень медленно.Я бы хотел использовать apply pandas (), так как это кажется намного быстрее, или, может быть, есть другое решение, но мне трудно разобраться в логике, так как есть еще много уловок панд, которыми я являюсьновый или не в курсе.Возможно, легче удалить несоответствующие столбцы из df2, чем добавлять их в df1, но я просто не знаю.Любая помощь приветствуется.

1 Ответ

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

Вы можете сделать левое слияние (левое внешнее соединение).Это сохранит все наблюдения в df1 при сопоставлении с GEO_ID в df2:

df1.merge(df2, left_on='CENSUS_ID', right_on='GEO_ID', how='left')
...