给定这两个数据框,如何获得预期的输出数据框?很长的路要走,就是用循环遍历数据框的行,iloc
然后map
在转换df2
为a之后使用该函数将dict
x和y映射为其分数。
这似乎很乏味,并且需要花费很长时间才能在大型数据帧上运行。我希望有一个更清洁的解决方案。
df1:
ID A B C
1 x x y
2 y x y
3 x y y
df2:
ID score_x score_y
1 20 30
2 15 17
3 18 22
输出:
ID A B C
1 20 20 30
2 17 15 17
3 18 22 22
注意:数据框将有许多列,并且类别将不止x和y(可能在20个类别的区域中)。
谢谢!
使用口罩:
df1.set_index('ID', inplace=True)
df2.set_index('ID', inplace=True)
df1.mask(df1=='x',df2['score_x'],axis=0).mask(df1=='y',df2['score_y'],axis=0)
结果:
A B C
ID
1 20 20 30
2 17 15 17
3 18 22 22
如果有很多列,并且它们都以相同的方式命名,则可以使用类似的方法:
for e in df2.columns.str.split('_').str[-1]:
df1.mask(df1==e, df2['score_'+e], axis=0, inplace=True)
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句