如何在Python中基于另一个更改整个数据帧值

时间:2016-07-01 10:34:29

标签: python python-2.7 pandas dataframe

我有两个数据帧:

df = pd.DataFrame({'A': [1,2,3,5,4,2], 'B':[1,2,4,1,2,3], 'C':[2,3,1,4,2,3]})
df1 = pd.DataFrame({'num':[1,2,3,4,5],'col':['red','red','blue','orange','orange']})

他们看起来像这样:

df:
        A   B   C
    0   1   1   2
    1   2   2   3
    2   3   4   1
    3   5   1   4
    4   4   2   2
    5   2   3   3

df1:

       col    num
   0    red     1
   1    red     2
   2    blue    3
   3    orange  4
   4    orange  5

我想要的是数据帧df,其值为df1:

df_new:
        A       B     C
    0   red     red     red
    1   red     red     blue
    2   blue    orange  red
    3   orange  red     orange
    4   orange  red     red
    5   red     blue    blue

请记住,我在df中有很多行,并且还有数千个不同的值。

非常感谢!

1 个答案:

答案 0 :(得分:1)

如果您将索引设置为num上的df1列,那么您可以使用apply拨打lambda并使用map执行查询每栏:

In [11]:
df2 = df1.set_index('num')
df.apply(lambda x: x.map(df2['col']))

Out[11]:
        A       B       C
0     red     red     red
1     red     red    blue
2    blue  orange     red
3  orange     red  orange
4  orange     red     red
5     red    blue    blue