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,testdf=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