Pandas 如何连接具有多索引的数据帧 问题描述
我有一个多索引的数据帧,它有三层深度(0,1,2),我想将这个数据帧与另一个数据帧连接起来,这个数据帧由我的原始数据帧的第2层索引 在代码中,我想转而:Pandas 如何连接具有多索引的数据帧 问题描述,pandas,Pandas,我有一个多索引的数据帧,它有三层深度(0,1,2),我想将这个数据帧与另一个数据帧连接起来,这个数据帧由我的原始数据帧的第2层索引 在代码中,我想转而: pd.DataFrame(['a', 'b', 'c', 'd']).transpose().set_index([0, 1, 2]) 及 进入 我试过的 我试过使用和然后。不起作用,尽管一些错误消息表明,如果我能正确设置,这可能会起作用 我试过了,但也没能成功。但我不确定它是否能起作用 笔记: 我已经看到答案似乎在回避问题(解决问题时)
pd.DataFrame(['a', 'b', 'c', 'd']).transpose().set_index([0, 1, 2])
及
进入
我试过的
- 我试过使用和然后。不起作用,尽管一些错误消息表明,如果我能正确设置
,这可能会起作用
- 我试过了,但也没能成功。但我不确定它是否能起作用
我已经看到答案似乎在回避问题(解决问题时) 如果索引级别的名称排成一行,熊猫自然会为您这样做。您可以重命名第二个数据帧的索引并相应地加入
d1 = pd.DataFrame(['a', 'b', 'c', 'd']).transpose().set_index([0, 1, 2])
d2 = pd.DataFrame(['c', 'e']).transpose().set_index(0)
d1.join(d2.rename_axis(2))
3 1
0 1 2
a b c d e
更全面的示例
d1 = pd.DataFrame([
[1, 2],
[3, 4],
[5, 6],
[7, 8]
], pd.MultiIndex.from_product([['A', 'B'], ['X', 'Y']], names=['One', 'Two']))
d2 = pd.DataFrame([
list('abcdefg')
], ['Y'], columns=list('ABCDEFG'))
d3 = pd.DataFrame([
list('hij')
], ['A'], columns=list('HIJ'))
d1.join(d2.rename_axis('Two')).join(d3.rename_axis('One'))
0 1 A B C D E F G H I J
One Two
A X 1 2 NaN NaN NaN NaN NaN NaN NaN h i j
Y 3 4 a b c d e f g h i j
B X 5 6 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
Y 7 8 a b c d e f g NaN NaN NaN
作品谢谢
d1 = pd.DataFrame(['a', 'b', 'c', 'd']).transpose().set_index([0, 1, 2])
d2 = pd.DataFrame(['c', 'e']).transpose().set_index(0)
d1.join(d2.rename_axis(2))
3 1
0 1 2
a b c d e
d1 = pd.DataFrame([
[1, 2],
[3, 4],
[5, 6],
[7, 8]
], pd.MultiIndex.from_product([['A', 'B'], ['X', 'Y']], names=['One', 'Two']))
d2 = pd.DataFrame([
list('abcdefg')
], ['Y'], columns=list('ABCDEFG'))
d3 = pd.DataFrame([
list('hij')
], ['A'], columns=list('HIJ'))
d1.join(d2.rename_axis('Two')).join(d3.rename_axis('One'))
0 1 A B C D E F G H I J
One Two
A X 1 2 NaN NaN NaN NaN NaN NaN NaN h i j
Y 3 4 a b c d e f g h i j
B X 5 6 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
Y 7 8 a b c d e f g NaN NaN NaN