首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在不合并索引的情况下连接具有不同多索引的两个数据帧?

如何在不合并索引的情况下连接具有不同多索引的两个数据帧?
EN

Stack Overflow用户
提问于 2020-02-12 07:28:29
回答 1查看 59关注 0票数 1

我有两个数据帧。每一个都有一个两级的多索引。第一级在每一个中都是相同的,但第二级是不同的。我希望将数据帧连接起来,并最终得到一个具有三级多索引的数据帧,其中第一个数据帧中的记录在第三个索引级中具有“NaN”,而第二个数据帧中的记录在第二个索引级中具有“NaN”。相反,我得到了一个具有两级索引的dataframe,其中每个dataframe的第二级中的值被放在相同的索引级中,该索引级采用第一个dataframe中第二级的名称(请参见下面的代码)。

有没有好的方法可以做到这一点呢?我可以将每个索引的第二级放到一个列中,连接起来,然后将它们放回索引中,但对我来说,这似乎是一种间接的方式。

代码语言:javascript
复制
df1 = pd.DataFrame({'index-1':['a1','b1','c1','d1'], 'index-2':['a2','b2','c2','d2'], 'values':[1,2,3,4]})
df2 = pd.DataFrame({'index-1':['a1','b1','c1','d1'], 'index-3':['a3','b3','c3','d3'], 'values':[5,6,7,8]})

df1.set_index(['index-1','index-2'], inplace=True)
df2.set_index(['index-1','index-3'], inplace=True)

pd.concat([df1, df2])

谢谢!

EN

回答 1

Stack Overflow用户

发布于 2020-02-12 11:48:05

重置两个输入数据帧上的索引,连接它们,然后再次设置索引将会更容易:

代码语言:javascript
复制
pd.concat([df1.reset_index(), df2.reset_index()], sort=False) \
    .set_index(['index-1', 'index-2', 'index-3'])

结果:

代码语言:javascript
复制
                         values
index-1 index-2 index-3        
a1      a2      NaN           1
b1      b2      NaN           2
c1      c2      NaN           3
d1      d2      NaN           4
a1      NaN     a3            5
b1      NaN     b3            6
c1      NaN     c3            7
d1      NaN     d3            8
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60178879

复制
相关文章

相似问题

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