I'm try to merge several dataframes in loop. My code is :
my_dict = {
'1':{
'providers_using':{
'providers':['prov1','prov2','prov3'],
'calls_count':[10,20,30]
}
},
'2':{
'providers_using':{
'providers':['prov1','prov2','prov3'],
'calls_count':[100,200,300]
}
},
'3':{
'providers_using':{
'providers':['prov1','prov2','prov3'],
'calls_count':[1000,2000,3000]
}
}
}
df_joined = pd.DataFrame(columns = ['providers','calls_count'])
for i in range(1,4):
gw_df = pd.DataFrame.from_dict(my_dict[str(i)]['providers_using'])
gw_df.rename(columns={"calls_count":"gw" + str(i)})
df_joined = pd.merge(df_joined,gw_df,left_on='providers',right_on = 'providers',how='outer')
print(df_joined)
Result is:
calls_count_x providers calls_count_y calls_count_x calls_count_y
0 NaN prov1 10 100 1000
1 NaN prov2 20 200 2000
2 NaN prov3 30 300 3000
But i want get names columns "calls_count" as gw1,gw2,gw3, etc. The count of steps in loop maybe random so it's not acceptable just do :
df_joined.columns = ['gw1','gw2','gw3']
Expected output is:
providers gw1 gw3 gw3
0 prov1 10 100 1000
1 prov2 20 200 2000
2 prov3 30 300 3000
Btw - why columns name are "calls_count_y","calls_count_x" ?