Вот как я пойду:
# Creating the dataframes
df1 = pd.DataFrame({'Candidate':['John', 'Mary', 'Ravenshaw', 'Lohan', 'Nile'], 'Google':[0,1,0,1,0], 'Netflix':[0,0,1,0,0], 'Microsoft':[1,0,0,0,0], 'Amazon':[0,0,0, 0, 1],'Paypal':[0,0,0,0,0]})
df1.set_index('Candidate', inplace=True)
df2 = pd.DataFrame({'Id':range(1,6), 'Address':['ABC', 'XYZ', 'A1B1', 'Lqw', 'Arou'], 'Score':[13,24,90,102,23], 'Candidate':['John', 'Mary', 'Ravenshaw', 'Lohan', 'Nile']})
df2.set_index('Candidate', inplace=True)
# Obtaining the company dataframe
df3 = df1.idxmax(axis=1)
df3.name = 'Company'
# Joining
df2.join(df3)
Надеюсь, это поможет.
Чтобы облегчить задачу парням, отвечающим, я бы попросил вас опубликовать минимальный рабочий код.