Python 使用不同的列数连接2个数据帧

Python 使用不同的列数连接2个数据帧,python,pandas,Python,Pandas,假设我们有两个数据帧: 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 ------- 由df中的列使用: df = pd.DataFrame(columns = ['a','b','c']) d = {'a

假设我们有两个数据帧:

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
-------
df
中的列使用:

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
我怎样才能加入他们

如果数据帧存在于某个位置(不创建新数据帧),请执行以下操作:


注意:这将生成已排序的列。所以,如果列的顺序已经排序,这将很好,否则就不行。

啊,你比我快!我不这么认为,因为
merge
sorting output columns,test
df=pd.DataFrame(columns=['c','a','b'])
我认为如果df中的列的顺序发生变化,比如
df=pd.DataFrame(columns=['c','a','b'])
它不会改变最终df1中列的顺序。是的,输出保持不变。哦,现在我明白你的意思了。:)但如果已经创建了数据帧,我认为这是最好的。。否?我认为这是唯一好的添加到应答-合并排序,因此,如果尚未对两个列进行排序,则会得到不同的顺序。这应该是个问题,但若对列进行排序,那个么就不是了。
df1.merge(df,how='left')

   a  b    c
0  1  3  NaN
1  2  4  NaN