我有一张桌子,看起来像这样:
p_id val p2_id
0 P1 1 P2
1 P2 2 P3
2 P3 3 P2
3 P4 4 P3
4 P5 5 P1
我想为
val
中的每个id获取与p_id
对应的p2_id
,如下所示: p_id val p2_id val2
0 P1 1 P2 2
1 P2 2 P3 3
2 P3 3 P2 2
3 P4 4 P3 3
4 P5 5 P1 1
我尝试将数据框合并到自身,如下所示:
import pandas as pd
dfa = pd.DataFrame({'p_id': ['P1', 'P2', 'P3', 'P4', 'P5'],
'val': [1,2,3,4,5],
'p2_id': ['P2', 'P3', 'P2', 'P3', 'P1'],
})
pd.merge(dfa, dfa.drop(columns='p2_id').rename(columns={'p_id':'p2_id'}), on='p2_id', how='left')
但这似乎是一种骇人听闻的方法。是否有内置方法或这种操作的名称?
最佳答案
使用map
df['val2'] = df.p2_id.map(df.set_index('p_id').val)
p_id val p2_id val2
0 P1 1 P2 2
1 P2 2 P3 3
2 P3 3 P2 2
3 P4 4 P3 3
4 P5 5 P1 1
关于python - 将数据框与其自身合并,其中外键指向其键,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58740446/