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

如何根据同一数据框中其他列名称中的匹配 ID 和字符串创建新列?

如何根据同一数据框中其他列名称中的匹配 ID 和字符串创建新列?

慕姐4208626 2024-01-04 17:17:31
我尝试在网上寻找解决方案,但找不到。我有一个数据框,其中有 10 个单独的 id 列,每个 ID 有 10 个单独的对应值列。下面显示了一个简短的示例例子:player_id_1    player_1_x   player_id_2   player_2_x  shooter_id 300               10           301           12           301299               11           300           13           299我想创建一个新列,该列从“shooter_id”和任何“player_id”列之间的相应 ID 匹配中获取值列,如下所示:player_id_1    player_1_x   player_id_2   player_2_x  shooter_id  shooter_x300               10           301           12           301         12 299               11           300           13           299         11我真的一直在努力完成这项工作,我不确定我是否需要在其内部进行合并,for循环数据帧,或者.apply..任何见解都会非常有帮助!
查看完整描述

1 回答

?
婷婷同学_

TA贡献1844条经验 获得超8个赞

让我们filter像player_id列一样,使用.eq+idxmax来获取player_id找到匹配项的列,最后使用lookup来获取对应于 的值player_id's:


c = df.filter(like='player_id')\

      .eq(df['shooter_id'], axis=0)\

      .idxmax(1).str.replace('_id', '').add('_x')


df['shooter_x'] = df.lookup(df.index, c)

   player_id_1  player_1_x  player_id_2  player_2_x  shooter_id  shooter_x

0          300          10          301          12         301         12

1          299          11          300          13         299         11


查看完整回答
反对 回复 2024-01-04
  • 1 回答
  • 0 关注
  • 45 浏览
慕课专栏
更多

添加回答

举报

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