如何根据另一个数据框中的查找值替换熊猫数据框值?

时间:2020-04-15 15:55:18

标签: python pandas dataframe

我有一个大熊猫数据框,其数值结构如下:

>>> df1
   A  B  C
0  2  1  2
1  1  2  3
2  2  3  1

我需要用一个“描述”替换上述所有单元格值,该“描述”映射到另一个数据帧中引用的字段名称和单元格值,如下所示:

>>> df2
  field_name  code description
0          A     1          NO
1          A     2         YES
2          A     3       MAYBE
3          B     1           x
4          B     2           y
5          B     3           z
6          C     1        GOOD
7          C     2         BAD
8          C     3        FINE

所需的输出如下:

>>> df3
     A  B     C
0  YES  x   BAD
1   NO  y  FINE
2  YES  z  GOOD

我可以找到一种使用.map或.replace之类的方法来进行小规模处理的方法-但是实际的数据集包含成千上万条记录,并替换了数百种不同的组合。任何帮助将不胜感激。

谢谢。

2 个答案:

答案 0 :(得分:1)

DataFrame.replaceDataFrame.pivot一起使用:

else if

也许您之前需要选择列:

df1 = df1.replace(df2.pivot(columns='field_name', index='code', values='description')
                     .to_dict())

输出

df1[cols] = df1[cols].replace(df2.pivot(columns='field_name',
                                        index='code', values='description')
                                 .to_dict())

答案 1 :(得分:0)

您可以堆叠> head(df) ani_id x_data y_data 1 1 -0.8832187 0.5080067 2 2 -0.2823767 -0.4060133 3 3 -1.5890646 -1.3499005 4 4 1.8312746 1.0803899 5 5 1.5814911 0.1227741 6 6 1.6500048 -0.2849130 ,与df_sub<- do.call(rbind, by(df, df$ani_id, head, 5)) df1合并结果:

df2