df1.set_index('ID').rename_axis('parameter', 1).stack().reset_index(name=
    'value').merge(df2).set_index(['ID', 'parameter']).weight.unstack()
Использование заголовка столбца и значений из одного фрейма данных для поиска весов в другом фрейме данных