我有一个大熊猫数据框,其数值结构如下:
>>> 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之类的方法来进行小规模处理的方法-但是实际的数据集包含成千上万条记录,并替换了数百种不同的组合。任何帮助将不胜感激。
谢谢。
答案 0 :(得分:1)
将DataFrame.replace
与DataFrame.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