Python 合并长度不等的多索引数据帧

Python 合并长度不等的多索引数据帧,python,pandas,merge,multi-index,Python,Pandas,Merge,Multi Index,这是我的两个数据帧 index = pd.MultiIndex.from_product([['a','b'],[1,2]],names=['one','two']) df = pd.DataFrame({'col':[10,20,30,40]}, index = index) df col one two a 1 10 2 20 b 1 30 2 40 index_1 = pd.MultiInde

这是我的两个数据帧

index = pd.MultiIndex.from_product([['a','b'],[1,2]],names=['one','two'])
df = pd.DataFrame({'col':[10,20,30,40]}, index = index)
df
          col
 one two     
 a   1     10
     2     20
 b   1     30
     2     40

index_1 = pd.MultiIndex.from_product([['a','b'],[1.,2],['abc','mno','xyz']], names = ['one','two','three'])
temp =  pd.DataFrame({'col1':[1,2,3,4,5,6,7,8,9,10,11,12]}, index = index_1)
temp
                col1
 one two three      
  a   1.0 abc       1
          mno       2
          xyz       3
      2.0 abc       4
          mno       5
          xyz       6
  b   1.0 abc       7
          mno       8
          xyz       9
      2.0 abc      10
          mno      11
          xyz      12
我怎样才能合并它们呢? 我试过了,这个

pd.merge(left = temp, right = df, left_on = temp.index.levels[0], right_on = df.index.levels[0])
但这是行不通的

KeyError: "Index([u'a', u'b'], dtype='object', name=u'one') not in index"
如果我通过reset_index()将索引转换为列,则合并会起作用。然而,我希望在保持索引结构的同时实现这一点

我期望的输出是:

方法1
重置索引
+
合并

df.reset_index().merge(temp.reset_index()).set_index(index_1.names)
方法2
加入
重置索引
部分

df.join(temp.reset_index('three')).set_index('three', append=True)

非常感谢,这很有效。很长一段时间以来,我一直在摆弄pd.merge和pd.reset_索引,但我没有想到我可以这样使用它们。你能建议我如何提高我处理熊猫时间序列数据的技能吗?@SirajS。最好的方法是试着在stackoverflow上回答这些问题。。。别开玩笑!