首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >pandas:合并数据帧并以列的形式包含索引

pandas:合并数据帧并以列的形式包含索引
EN

Stack Overflow用户
提问于 2018-01-31 07:56:48
回答 2查看 1.1K关注 0票数 1

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

代码语言:javascript
运行
复制
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

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

代码语言:javascript
运行
复制
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

我尝试了一些不同类型的合并,但我无法实现我想要的数据帧。

代码语言:javascript
运行
复制
df3 = pd.merge(df1, df2, on=['dp', 'value'], how='outer')

事先感谢你对此的任何帮助。

EN

回答 2

Stack Overflow用户

发布于 2018-01-31 08:00:24

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

代码语言:javascript
运行
复制
df1['dp_id'] = df1.index
df3 = pd.merge(df1, df2, on=['dp', 'value'], how='outer')
票数 2
EN

Stack Overflow用户

发布于 2018-01-31 08:38:02

使用rename_axisreset_index

代码语言:javascript
运行
复制
df3 = pd.merge(df1.rename_axis('dp_id').reset_index(), df2,  
                                           on=['dp', 'value'], how='outer')
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48532361

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档