Nitesh Selkari
Nitesh Selkari

Reputation: 67

append one dataframe column value to another dataframe

I have two dataframes. df1 is empty dataframe and df2 is having some data as shown. There are few columns common in both dfs. I want to append df2 dataframe columns data into df1 dataframe's column. df3 is expected result.

I have referred Python + Pandas + dataframe : couldn't append one dataframe to another, but not working. It gives following error: ValueError: Plan shapes are not aligned

df1:

Empty DataFrame
Columns: [a, b, c, d, e]
Index: [] `

df2:

    c   e
0  11  55
1  22  66 

df3 (expected output):

  a b   c d   e
0      11    55
1      22    66 

tried with append but not getting desired result

Upvotes: 0

Views: 5799

Answers (3)

Preetham
Preetham

Reputation: 577

import pandas as pd

l1 = ['a', 'b', 'c', 'd', 'e']
l2 = []
df1 = pd.DataFrame(l2, columns=l1)


l3 = ['c', 'e']
l4 = [[11, 55],
      [22, 66]]
df2 = pd.DataFrame(l4, columns=l3)



print("concat","\n",pd.concat([df1,df2]))  # columns will be inplace

print("merge Nan","\n",pd.merge(df2, df1,how='left', on=l3))  # columns occurence is not preserved


#### Output  ####
#concat 
      a    b   c    d   e
0  NaN  NaN  11  NaN  55
1  NaN  NaN  22  NaN  66

#merge
     c   e    a    b    d
0  11  55  NaN  NaN  NaN
1  22  66  NaN  NaN  NaN

Upvotes: 1

Jeff McBride
Jeff McBride

Reputation: 11

Append seems to work for me. Does this not do what you want?

df1 = pd.DataFrame(columns=['a', 'b', 'c'])
print("df1: ")
print(df1)
df2 = pd.DataFrame(columns=['a', 'c'], data=[[0, 1], [2, 3]])
print("df2:")
print(df2)
print("df1.append(df2):")
print(df1.append(df2, ignore_index=True, sort=False))

Output:

df1: 
Empty DataFrame
Columns: [a, b, c]
Index: []
df2:
   a  c
0  0  1
1  2  3
df1.append(df2):
   a    b  c
0  0  NaN  1
1  2  NaN  3

Upvotes: 1

Rajat Jain
Rajat Jain

Reputation: 2022

Have you tried pd.concat ?

pd.concat([df1,df2])

Upvotes: 0

Related Questions