连接2个具有不同列数的pandas数据框

时间:2019-02-15 09:32:24

标签: python pandas

考虑我们有2个数据框:

df = pd.DataFrame(columns = ['a','b','c']) ##empty
d = {'a': [1, 2], 'b': [3, 4]} 
df1 = pd.DataFrame(data=d)

我如何加入他们,以便获得这样的结果:

a b c
-----
1 3 Nan
---------
2 4 Nan
-------

2 个答案:

答案 0 :(得分:3)

df中的列使用reindex

df = pd.DataFrame(columns = ['a','b','c']) 
d = {'a': [1, 2], 'b': [3, 4]} 
df1 = pd.DataFrame(data=d).reindex(columns=df.columns)
print (df1)
   a  b   c
0  1  3 NaN
1  2  4 NaN

解决方案之间的差异-如果未对列进行排序,则会得到不同的输出:

#different order
df = pd.DataFrame(columns = ['c','a','b']) 
d = {'a': [1, 2], 'b': [3, 4]} 
df1 = pd.DataFrame(data=d)

print (df1.reindex(columns=df.columns))
    c  a  b
0 NaN  1  3
1 NaN  2  4

print (df1.merge(df,how='left'))
   a  b    c
0  1  3  NaN
1  2  4  NaN

答案 1 :(得分:2)

  
    

我如何加入他们

  

如果数据框存在于某处(不创建新的),请执行以下操作:

df1.merge(df,how='left')

   a  b    c
0  1  3  NaN
1  2  4  NaN

注意:这将产生已排序的列。因此,如果已经对列的顺序进行了排序,则可以正常工作,否则就不能。