考虑我们有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
-------
答案 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
注意:这将产生已排序的列。因此,如果已经对列的顺序进行了排序,则可以正常工作,否则就不能。