如何在python中映射两个数据框?

时间:2021-06-17 12:57:51

标签: python dataframe

我有一个数据框,每个 Id 可以有 n 个 P_Id 值。

X = Id    P_Id     Value
    1      a_1      56
    1      a_2      76
    2      a_1      67
    2      a_2      78
    2      a_3      98

我有另一个数据框

Y =  Id  Name 
     1    Erwin
     2    Joseph
     3     Nik

我想要输出数据框

Output =  Id  a_1  a_2   a_3  Name
          1    56   76   nan   Erwin
          2    67   78   98    Joseph

1 个答案:

答案 0 :(得分:2)

内部merge x和y,然后pivot这个合并的数据帧,然后合并回第二个数据帧,最后,您可以重置索引。

x.merge(y, how='inner', on='Id').pivot(columns='P_Id', values='Value').merge(y, on='Id').reset_index()

输出:

   Id   a_1   a_2   a_3    Name
0   1  56.0  76.0   NaN   Erwin
1   2  67.0  78.0  98.0  Joseph