Вы можете сделать это, установив столбец «Имя» и используя слияние, как показано ниже
df1 = pd.DataFrame([['Tom', 'AAPL', '0', '0', '0'], ['Tom', 'GOOG', '0', '0', '0'], ['Tom', 'NFLX', '0', '0', '0'], ['John', 'AAPL', '0', '0', '0'], ['John', 'GOOG', '0', '0', '0'], ['John', 'NFLX', '0', '0', '0']], columns=('Name', 'Stock', '0', '1', '2'))
df1.set_index(["Name", "Stock"], inplace=True)
df2 = pd.DataFrame([['AAPL', '99'], ['NFLX', '11']], columns=('Stock', 'Value'))
df2["Name"]="Tom"
df1.merge(df2, on=["Name", "Stock"], how="left").set_index(["Name", "Stock"])
Результат
0 1 2 Value
Name Stock
Tom AAPL 0 0 0 99
GOOG 0 0 0 NaN
NFLX 0 0 0 11
John AAPL 0 0 0 NaN
GOOG 0 0 0 NaN
NFLX 0 0 0 NaN