Options
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
12-01-2022 10:41 AM
This worked for me:
import pandas as ps
def merge_dataframes(left=None, right=None, how='inner', on=None, left_on=None,
right_on=None, left_index=False, right_index=False):
merging_left = left.copy()
merging_left['weird_index_name'] = merging_left.index
new_df = merging_left.merge(right, on=on, how=how, left_on=left_on, right_on=right_on, suffixes=('', '_dupe_right'),
left_index=left_index, right_index=right_index)
returning_df = new_df.set_index('weird_index_name')
returning_df.index.name = None
return returning_df
df_1 = ps.DataFrame({
'join_column': [1, 2, 3, 4],
'value1': ['A', 'B', 'C', 'D']
}, index=['Index1', 'Index2', 'Index3', 'Index4'])
df_2 = ps.DataFrame({
'join_column': [1, 2, 3, 4, 5],
'value2': ['a', 'b', 'c', 'd', 'e']
})
df_3 = ps.DataFrame({
'join_column': [1, 2, 3, 4, 5, 6],
'value3': [1.1, 2.2, 3.3, 4.4, 6.6, 7.7]
})
input_list = [df_1, df_2, df_3]
#print(type(input_list[0]))
final_df = input_list[0]
#print(final_df)
for next_df in input_list[1:]:
final_df = merge_dataframes(left=final_df, right=next_df, how='left', on='join_column')
print(final_df)