首页 > 解决方案 > Python Pandas:添加两个数据框的缺失行并保留额外的列

问题描述

我想添加缺少的行数据框 df1 并保留额外的列信息

In [183]: df1
Out[183]:
           City       Country     Region
0       Chicago           US      N.America 
1  San Franciso           US      N.America 
2        Boston           US      N.America 
3        London           UK      Europe
4        Beijing          China   Asia  
5         Omaha           US      N.America


In [183]: df2
Out[183]:
           City          
0       Chicago            
1  San Franciso 
2        Sao Paulo       
3        Boston                 
4        London            
5        Beijing 
6        Tokyo             
7        Omaha           

合并后的期望结果是

           City       Country     Region
0       Chicago           US      N.America 
1  San Franciso           US      N.America 
2     Sao Paulo           nan     nan
3        Boston           US      N.America 
4        London           UK      Europe
5        Beijing          China   Asia 
6         Tokyo           nan     nan
7         Omaha           US      N.America

我正在尝试pd.merge(df2, df1, on='City', how='outer')但返回 keyerror。

标签: pandaspython-2.7dataframe

解决方案


尝试下面的代码,使用pd.merge, left_join,您想要的输出:

merged = pd.merge(df2,df1,how='left',on='City')
print(merged)
             City Country     Region
0         Chicago      US  N.America
1  San Fransicsco     NaN        NaN
2       Sao Paolo     NaN        NaN
3          Boston      US  N.America
4          London      UK     Europe
5         Beijing   China       Asia
6           Tokyo     NaN        NaN
7           Omaha      US  N.America

如果要使用outer联接,可以使用以下代码获得此结果:

merged_outer = pd.merge(df2, df1, on='City', how='outer')

print(merged_outer)

             City Country     Region
0         Chicago      US  N.America
1  San Fransicsco     NaN        NaN
2       Sao Paolo     NaN        NaN
3          Boston      US  N.America
4          London      UK     Europe
5         Beijing   China       Asia
6           Tokyo     NaN        NaN
7           Omaha      US  N.America
8    San Franciso      US  N.America

DF1 & DF2 分别为:

df1
 
           City Country     Region
0       Chicago      US  N.America
1  San Franciso      US  N.America
2        Boston      US  N.America
3        London      UK     Europe
4       Beijing   China       Asia
5         Omaha      US  N.America


df2

             City
0         Chicago
1  San Fransicsco
2       Sao Paolo
3          Boston
4          London
5         Beijing
6           Tokyo
7           Omaha

推荐阅读