我嘗試在網(wǎng)上尋找解決方案,但找不到。我有一個(gè)數(shù)據(jù)框,其中有 10 個(gè)單獨(dú)的 id 列,每個(gè) ID 有 10 個(gè)單獨(dú)的對應(yīng)值列。下面顯示了一個(gè)簡短的示例例子:player_id_1 player_1_x player_id_2 player_2_x shooter_id 300 10 301 12 301299 11 300 13 299我想創(chuàng)建一個(gè)新列,該列從“shooter_id”和任何“player_id”列之間的相應(yīng) 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我真的一直在努力完成這項(xiàng)工作,我不確定我是否需要在其內(nèi)部進(jìn)行合并,for循環(huán)數(shù)據(jù)幀,或者.apply..任何見解都會(huì)非常有幫助!
1 回答

婷婷同學(xué)_
TA貢獻(xiàn)1844條經(jīng)驗(yàn) 獲得超8個(gè)贊
讓我們filter像player_id列一樣,使用.eq+idxmax來獲取player_id找到匹配項(xiàng)的列,最后使用lookup來獲取對應(yīng)于 的值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
添加回答
舉報(bào)
0/150
提交
取消