首页 > 解决方案 > 根据来自另一个数据帧的值之间的映射对数据帧中的几列进行变异

问题描述

我有2个数据框:

df看起来像这样

id   v1   v2   v3    v4   etc.
1    1     4    2     5
2    4     4    6     1
3    2     1    3     4
etc.

虽然rules看起来像这样

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

标签: pythonpandasdataframe

解决方案


您可以执行以下操作:

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

rules喜欢

     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

推荐阅读