您可以使用join 获得相同的结果,因为它更注重索引。这是我曾经在pd.MultiIndex的介绍中教过的一个MVE:
first_index = [('A', 'a'), ('A', 'b'), ('B', 'a'), ('B', 'b')]
second_index = [('A', 'a', 'c'), ('A', 'b', 'c'), ('B', 'a', 'c'), ('B', 'b', 'c')]
data = [1, 2, 3, 4]
ab = pd.DataFrame(data=data, index=pd.MultiIndex.from_tuples(first_index,
names=['A', 'B']),
columns=['col_1'])
abc = pd.DataFrame(data=data, index=pd.MultiIndex.from_tuples(second_index,
names=['A', 'B', 'C']),
columns=['col_2'])
ab
A B col_1
A a 1
A b 2
B a 3
B b 4
abc
A B C col_2
A a c 1
A b c 2
B a c 3
B b c 4
所以到现在为止,这只是简单的带名称的 MultiIndex,但在这些名称上使用了连接:
abc.join(ab, on=['A', 'B'], how='left')
A B C col_2 col_1
A a c 1 1
A b c 2 2
B a c 3 3
B b c 4 4
您将获得left 加入而没有reset_index。