为了账号安全,请及时绑定邮箱和手机立即绑定

从另一个数据帧替换数据帧中的值

从另一个数据帧替换数据帧中的值

翻过高山走不出你 2021-09-11 14:50:43
所以我正在使用带有两个数据框的数据集。数据帧如下所示:df1:Item_ID  Item_Name0        A1        B2        Cdf2:Item_slot_1   Item_slot_2  Item_Slot_32             2            11             2            00             1            1df2 中的值表示来自 df1 的 Item_ID。如何将 df2 中的值从 item_id 替换为实际项目名称,以便 df2 看起来像:Item_slot_1   Item_slot_2  Item_Slot_3C             C            BB             C            AA             B            B现实中的数据集要大得多,而且有更多的 id 和名称,而不仅仅是 a、b 和 c
查看完整描述

2 回答

?
白板的微信

TA贡献1883条经验 获得超3个赞

通过创建字典zip并将其传递给applymap, or replaceor applywith map:


s = dict(zip(df1['Item_ID'], df1['Item_Name']))

#if value not exist in df1['Item_ID'] get None in df2

df2 = df2.applymap(s.get)

或者:


#if value not exist in df1['Item_ID'] get original value in df2

df2 = df2.replace(s)

或者:


#if value not exist in df1['Item_ID'] get NaN in df2

df2 = df2.apply(lambda x: x.map(s))

print (df2)

  Item_slot_1 Item_slot_2 Item_Slot_3

0           C           C           B

1           B           C           A

2           A           B           B

编辑:


您可以按名称为进程指定列:


cols = ['Item_slot_1','Item_slot_2','Item_Slot_3']


df2[cols] = df2[cols].applymap(s.get)

df2[cols] = df2[cols].replace(s)

df2[cols] = df2[cols].apply(lambda x: x.map(s))


查看完整回答
反对 回复 2021-09-11
  • 2 回答
  • 0 关注
  • 100 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信