Python 基于来自另一个数据帧的值之间的映射,从一个数据帧中变异多个列

Python 基于来自另一个数据帧的值之间的映射,从一个数据帧中变异多个列,python,pandas,dataframe,Python,Pandas,Dataframe,我有两个数据帧: df看起来像这样 id v1 v2 v3 v4 etc. 1 1 4 2 5 2 4 4 6 1 3 2 1 3 4 etc. id name 1 red 2 blue 3 grey 4 green 5 black 6 gold etc 而规则看起来是这样的

我有两个数据帧:

df
看起来像这样

id   v1   v2   v3    v4   etc.
1    1     4    2     5
2    4     4    6     1
3    2     1    3     4
etc.
id       name
1        red
2        blue  
3        grey 
4        green  
5        black  
6        gold 
etc
规则
看起来是这样的

id   v1   v2   v3    v4   etc.
1    1     4    2     5
2    4     4    6     1
3    2     1    3     4
etc.
id       name
1        red
2        blue  
3        grey 
4        green  
5        black  
6        gold 
etc
我想得到的是

id        v1        v2        v3         v4   etc.
1         red       green     blue       black
2         green     green     gold       red
3         blue      red       grey       green
etc.

因此,基本上使用规则中数字和颜色之间的映射来变异df,您可以执行以下操作:

results = df.applymap(lambda i: rules.loc[i, 'name'])
使用
df
类似

    v1  v2  v3  v4
id                
1    1   4   2   5
2    4   4   6   1
3    2   1   3   4
     name
id       
1     red
2    blue
3    grey
4   green
5   black
6    gold
规则
类似

    v1  v2  v3  v4
id                
1    1   4   2   5
2    4   4   6   1
3    2   1   3   4
     name
id       
1     red
2    blue
3    grey
4   green
5   black
6    gold
结果是

       v1     v2    v3     v4
id                           
1     red  green  blue  black
2   green  green  gold    red
3    blue    red  grey  green