pandas:合并数据帧并将index包含为列

时间:2018-01-30 23:56:48

标签: python pandas

我有两个数据帧,如下所示:

<span *ngIf="caseCaption" class="header-data">{{caseCaption.CaseDisplayNumber}}</span>

我正在尝试将df1中的索引添加到df2以生成如下所示的数据框:

df1:
   dp  value
0  d1      2
1  d1      3
2  d2      7
3  d2      8
4  d3      6

df2:
  fv_name  dp  value
0     x-1  d1      2
1     x-2  d1      2
2     x-3  d1      3
3     x-1  d2      7
4     x-2  d2      7
5     x-3  d2      8
6     x-1  d3      6
7     x-2  d3      6
8     x-3  d3      6

我正在尝试一些不同类型的合并,如下所示,但我无法实现所需的数据框。

df3:
  fv_name  dp  value   dp_id
0     x-1  d1      2    0
1     x-2  d1      2    0
2     x-3  d1      3    1
3     x-1  d2      7    2
4     x-2  d2      7    2
5     x-3  d2      8    3
6     x-1  d3      6    4
7     x-2  d3      6    4
8     x-3  d3      6    4

提前感谢您提供任何帮助。

2 个答案:

答案 0 :(得分:2)

将d1的索引提升为列,然后执行合并:

df1['dp_id'] = df1.index
df3 = pd.merge(df1, df2, on=['dp', 'value'], how='outer')

答案 1 :(得分:0)

使用rename_axis&amp; reset_index

df3 = pd.merge(df1.rename_axis('dp_id').reset_index(), df2,  
                                           on=['dp', 'value'], how='outer')