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上回答这些问题。。。别开玩笑!