我有两个数据帧。每一个都有一个两级的多索引。第一级在每一个中都是相同的,但第二级是不同的。我希望将数据帧连接起来,并最终得到一个具有三级多索引的数据帧,其中第一个数据帧中的记录在第三个索引级中具有“NaN”,而第二个数据帧中的记录在第二个索引级中具有“NaN”。相反,我得到了一个具有两级索引的dataframe,其中每个dataframe的第二级中的值被放在相同的索引级中,该索引级采用第一个dataframe中第二级的名称(请参见下面的代码)。
有没有好的方法可以做到这一点呢?我可以将每个索引的第二级放到一个列中,连接起来,然后将它们放回索引中,但对我来说,这似乎是一种间接的方式。
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])谢谢!
发布于 2020-02-12 11:48:05
重置两个输入数据帧上的索引,连接它们,然后再次设置索引将会更容易:
pd.concat([df1.reset_index(), df2.reset_index()], sort=False) \
.set_index(['index-1', 'index-2', 'index-3'])结果:
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 8https://stackoverflow.com/questions/60178879
复制相似问题