我有两个pandas数据帧,如下所示:
DF1
Name City Postal_Code State
James Phoenix 85003 AZ
John Scottsdale 85259 AZ
Jeff Phoenix 85003 AZ
Jane Scottsdale 85259 AZ
DF2
Postal_Code Income Category
85003 41038 Two
85259 104631 Four
我想通过从{{1}捕获Income
和Category
的值,向df1
插入两列Income
和Category
}对应df2
中每行的postal_code
。
我在SO中找到的最接近的问题是 - Fill DataFrame row values based on another dataframe row's values pandas。但是,pd.merge解决方案并没有为我解决问题。具体来说,我用了
df1
我得到的只是两个新列中的pd.merge(df1,df2,on='postal_code',how='outer')
值。不确定这是否是因为nan
和df1
的行数不同。有什么建议可以解决这个问题吗?
答案 0 :(得分:1)
你错了怎么回事,改用'inner'
。这匹配两个数据帧中存在键的位置
df1.Postal_Code = df1.Postal_Code.astype(int)
df2.Postal_Code = df2.Postal_Code.astype(int)
df1.merge(df2,on='Postal_Code',how='inner')
Name City Postal_Code State Income Category
0 James Phoenix 85003 AZ 41038 Two
1 Jeff Phoenix 85003 AZ 41038 Two
2 John Scottsdale 85259 AZ 104631 Four
3 Jane Scottsdale 85259 AZ 104631 Four