在两个熊猫数据框中找到匹配的值,然后从匹配的行中返回一个值

时间:2019-01-21 22:18:58

标签: python pandas indexing concatenation

很难用一种清晰准确的方式来表达这个问题,因此希望以下内容可以帮助我更多地了解我的问题。

我有两个熊猫数据框,在此示例中进行了简化,它们是:

df1 = 
'CENSUS_ID'  
60014001001
60014002001

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

我想通过在df2中找到匹配的GEO_ID并返回'MED_INCOME'值,将一列添加到df1中,称为“ MED_INCOME”。虽然简化了这些数据帧,但df1的实际len可能长数百行,而df2的len却长数万行。因此,尽管我可以轻松地进行设置以迭代查找匹配项,但由于它非常慢,因此不理想。我想使用pandas apply(),因为它似乎要快得多,或者也许还有另一种解决方案,但是我很难弄清楚逻辑,因为我仍然有很多熊猫“技巧”不熟悉或不知道的。也许从df2中删除不匹配的列比添加到df1中更容易,但我只是不知道。任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:2)

您可以进行左合并(左外部联接)。这样会将所有观察结果保留在df1中,同时将其与GEO_ID中的df2相匹配:

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