将数据框与其自身合并,其中外键指向其键

我有一个看起来像这样的表:

  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','P1'],})
pd.merge(dfa,dfa.drop(columns='p2_id').rename(columns={'p_id':'p2_id'}),on='p2_id',how='left')

但是,这似乎是一种骇人听闻的方法。是否有内置方法或此类操作的名称?

liu461520 回答:将数据框与其自身合并,其中外键指向其键

使用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
本文链接:https://www.f2er.com/3148145.html

大家都在问