很难用一种清晰准确的方式来表达这个问题,因此希望以下内容可以帮助我更多地了解我的问题。
我有两个熊猫数据框,在此示例中进行了简化,它们是:
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中更容易,但我只是不知道。任何帮助表示赞赏。
答案 0 :(得分:2)
您可以进行左合并(左外部联接)。这样会将所有观察结果保留在df1
中,同时将其与GEO_ID
中的df2
相匹配:
df1.merge(df2, left_on='CENSUS_ID', right_on='GEO_ID', how='left')