Pandas Python:添加缺少的两个dataframe行,并保留额外的列

Pandas Python:添加缺少的两个dataframe行,并保留额外的列,pandas,python-2.7,dataframe,Pandas,Python 2.7,Dataframe,我想添加缺少的行dataframe 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

我想添加缺少的行dataframe 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。

尝试下面的代码,使用
pd.merge
left\u 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
如果要使用
外部
联接,可以使用以下代码获得此结果:

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

答案不必使用merge。只要
df2
中的城市不在
df1
中,同时在df1中维护列数据,我认为解决方案
pd.merge(df2,df1,on='City',how='outer')
在这里很好。什么是
df1.columns
df2.columns
?在
City
列中都有吗?或者您需要
pd.merge(df2,df1,on='City',how='left')
?两者都返回key或on
City
。它是
城市
栏目的重要位置。第1列或第2列很重要?不确定是否理解,什么是
print(df1.columns)
print(df2.columns)