Update:
pd.merge(df1, df2, on=[0, 1], how='outer') \
.to_csv('output.csv', index=False, header=False, na_rep='nan')
# Content of file:
email,joe,@gmail.com,mr
email,doe,@hotmail.com,mrs
name,emilly,doe,nan
name,jenny,van,gogh
year,talia,19,97
year,kevin,20,nan
Update
How to merge more than 2 csv files? Can I use merge() for 3 csv files too?
I split your second file into 2 parts:
# data1.csv
email,joe,@gmail.com
email,doe,@hotmail.com
name,emilly,doe
name,jenny,van
year,talia,19
year,kevin,20
# data2.csv
email,joe,mr
email,doe,mrs
# data3.csv
name,jenny,gogh
year,talia,97
Use reduce from functools module:
filenames = ['data1.csv', 'data2.csv', 'data3.csv']
dfs = [pd.read_csv(fn, header=None ) for fn in filenames]
df = reduce(lambda df1, df2: pd.merge(df1, df2, on=[0, 1], how='outer'), dfs)
df.to_csv('output.csv', index=False, header=False, na_rep='nan')
Output:
email,joe,@gmail.com,mr,nan
email,doe,@hotmail.com,mrs,nan
name,emilly,doe,nan,nan
name,jenny,van,nan,gogh
year,talia,19,nan,97
year,kevin,20,nan,nan