使用一个数据帧中的列标题和值来查找另一个数据帧中的权重

Sha*_*ect 5 python dataframe pandas

我有两个表,如下所示

    ID  param1  param2  param3
0  A12       2       1       1
1  B15       1       2       1
2  B20       2       2       1
...
Run Code Online (Sandbox Code Playgroud)

    parameter  value  weight
0      param1      1      10
1      param1      2      13
2      param2      1      21
3      param2      2      39
4      param3      1      49
5      param3      2      61
Run Code Online (Sandbox Code Playgroud)

采用第一个数据帧的最佳方法是什么,在第二个数据帧中查找每个参数的权重并返回如下的数据帧?

    ID  param1  param2  param3
0  A12      13      21      49
1  B15      10      39      49
2  B20      13      39      49
Run Code Online (Sandbox Code Playgroud)

我想的是编写一个函数给定参数,值,子集table2如下, table2[(table2['parameter'] = parameter) & (table2['value'] = value)]并对table1中的每一列做一些矢量化应用程序,但我不知道如何遍历每个值并进行查找.

Psi*_*dom 5

一种选择是转换table1为长格式,与table2参数和值合并,然后将其转换回宽格式:

In [85]: pd.merge(pd.melt(df1, id_vars='ID'), df2,
                  left_on=['variable', 'value'], right_on=['parameter', 'value']
                   ).pivot('ID', 'parameter', 'weight')
Out[85]:
parameter  param1  param2  param3
ID
A12            13      21      49
B15            10      39      49
B20            13      39      49
Run Code Online (Sandbox Code Playgroud)