Можете ли вы изменить имя столбца, чтобы у вас не было повторяющихся имен столбцов (в вашем случае это количество)? Если да, я бы использовал функцию конкатов pandas:
#generate simpler version of your dataframe
df=pd.DataFrame({'Firewall':['10_1_81_34','10_1_81_34','10_1_81_34'],
'Gatway':['vsys1','vsys1','vsys1'],
'dst':['10.1.81.255','10.255.63.18','103.226.213.30'],
'count_dst':[34,16,4]})
df.set_index(['Firewall','Gatway'],inplace=True)
df2=pd.DataFrame({'Firewall':['10_1_81_34','10_1_81_34','10_1_81_34'],
'Gatway':['vsys1','vsys1','vsys1'],
'src':['10.1.81.10','10.1.81.11','10.1.81.115'],
'count_src':[8,12,11]})
df2.set_index(['Firewall','Gatway'],inplace=True)
#Concatenate dataframes along columns
df3=pd.concat([df,df2],axis=1)
Используя pd.concat, я получаю следующий вывод:
dst count_dst src count_src
Firewall Gatway
10_1_81_34 vsys1 10.1.81.255 34 10.1.81.10 8
vsys1 10.255.63.18 16 10.1.81.11 12
vsys1 103.226.213.30 4 10.1.81.115 11
Редактировать для работы с кадрами данных различныхдлина:
#generate simpler version of your dataframe
df=pd.DataFrame({'Firewall':['10_1_81_34','10_1_81_34'],
'Gatway':['vsys1','vsys1'],
'dst':['10.1.81.255','10.255.63.18'],
'count_dst':[34,16]})
df2=pd.DataFrame({'Firewall':['10_1_81_34','10_1_81_34','10_1_81_34'],
'Gatway':['vsys1','vsys1','vsys1'],
'src':['10.1.81.10','10.1.81.11','10.1.81.115'],
'count_src':[8,12,11]})
#Concatenate dataframes along columns
df3=pd.concat([df,df2],axis=1)
#Remove duplicated columns
df3.Firewall=df3.Firewall.dropna(axis=1)
df3.Gatway=df3.Gatway.dropna(axis=1)
df3=df3.loc[:,~df3.columns.duplicated()]
#set index
df3.set_index(['Firewall','Gatway'],inplace=True)
это вывод:
dst count_dst src count_src
Firewall Gatway
10_1_81_34 vsys1 10.1.81.255 34.0 10.1.81.10 8
vsys1 10.255.63.18 16.0 10.1.81.11 12
vsys1 NaN NaN 10.1.81.115 11