It is possible by DataFrame.add_prefix
and left_on
and right_on
parameetrs, but get same values in both columns, because default inner join:
df1 = pd.DataFrame([(10,2),(20,4),(30,6)],
columns=['Total','Unique'],
index=pd.date_range('2015-01-01', periods=3))
df2 = pd.DataFrame([(10,2),(30,6),(20,600)],
columns=['Total','Unique'],
index=pd.date_range('2015-01-02', periods=3))
#print (df1)
#print (df2)
result = pd.merge(df1.add_prefix('df1_'),
df2.add_prefix('df2_'),
left_on=['df1_Total','df1_Unique'],
right_on=['df2_Total','df2_Unique'])
print (result)
df1_Total df1_Unique df2_Total df2_Unique
0 10 2 10 2
1 30 6 30 6
If want join by index values is necessary use left_index
and right_index
with suffixes
:
result = pd.merge(df1,
df2,
left_index=True,
right_index=True,
suffixes=('_df1','_df2'))
print (result)
Total_df1 Unique_df1 Total_df2 Unique_df2
2015-01-02 20 4 10 2
2015-01-03 30 6 30 6