简体   繁体   中英

join 2 pandas dataframes with different number of columns

Consider we have 2 dataframes:

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

How can I join them in order the result to be this:

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

Use reindex by columns from 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

Difference betwen soluions - if columns are not sorted get different output:

#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

How can I join them

If you have the dataframe existing somewhere(not creating a new), do :

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

   a  b    c
0  1  3  NaN
1  2  4  NaN

Note: This produces sorted columns. So if order of columns are already sorted, this will work fine , else not.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM