首页 > 解决方案 > 加入两个有条件的数据框

问题描述

我尝试根据邮政编码合并两个数据框。但我只有一个国家/地区的邮政编码,所以我想确定,其他国家/地区的其他行在合并列中收到 NaN。

df 看起来像这样

client     age-group     category     city     zip     country
4       18-24           basic         atown    12345   fooland
5       18-24           basic         atown    12345   fooland
6       <18             basic         atown    12345   fooland
5       <18             premium       ctown    12345   belgium
2       <18             basic         atown    12345   fooland
7       <18             basic         atown    12345   fooland

另一个是这样的:

zip     state     population     ...
11111    a        17800
11112    a        15045
12345    a        13215
12349    b        5401 

第二个df中的zip是唯一的

有没有比使用 for 循环更快更简单的方法来合并它们df.iterrows()

标签: pythonpandasnumpy

解决方案


mergehow='left'应该工作:

df1.merge(df1[df1['country']=='fooland'].merge(df2, on='zip', how='left'), on=df1.columns.to_list(), how='left')

df1你想用 s 填充的数据框在哪里NaN


推荐阅读