使用索引根据另一个数据帧上的值替换数据帧上的值

时间:2021-07-30 15:36:35

标签: python pandas

我有一个具有以下值的 df1:

Vehicle1  Vehicle2 Vehicle3
   0         0         0   
   1         3         2
   0         0         4
  NaN       NaN        0

和带有值的 df2:

Index         Coords
  0    (-49.36204, -21.04797)
  1    (-48.9062, -20.7399)
  2    (-48.9132, -20.7296)
  3    (-48.8955, -20.7329)
  4    (-48.8065, -20.8147)

我想使用列 df['index'] 作为参考,将 df1 中的值替换为 df['Coords'] 中的值,所以我会得到这样的结果:

      Vehicle1              Vehicle2              Vehicle3
(-49.36204,-21.04797)  (-49.36204,-21.04797)    (-49.36204,-21.04797)
(-48.9062,-20.7399)    (-48.8955, -20.7329)     (-48.9132, -20.7296)
(-49.36204,-21.04797)  (-49.36204,-21.04797)    (-48.8065, -20.8147)
       NaN                     NaN              (-49.36204,-21.04797)

1 个答案:

答案 0 :(得分:0)

假设 Index 是 df2 中的一列,您可以使用 applymap 对 df1 的每个元素应用一个函数:

df1.applymap(lambda x: df2[df2['Index'] == int(x)].Coords.values[0], na_action='ignore')

结果:

                 Vehicle1                Vehicle2                Vehicle3
0  (-49.36204, -21.04797)  (-49.36204, -21.04797)  (-49.36204, -21.04797)
1    (-48.9062, -20.7399)    (-48.8955, -20.7329)    (-48.9132, -20.7296)
2  (-49.36204, -21.04797)  (-49.36204, -21.04797)    (-48.8065, -20.8147)
3                     NaN                     NaN  (-49.36204, -21.04797)