# 案例1
df_test = pd.DataFrame(
data=[
['a'],
['A', 'B', 'B'],
range(1,3)
],
index=['col' + str(i) for i in range(1,4)]
).T.fillna(method='ffill').set_index(['col1', 'col2'])
# df_test筛选col1==a且col2==A的行
df_test_2 = df_test.loc[('a', 'A')] # pandas.core.frame.DataFrame
# 根据df_test_2的索引筛选df_test
df_test.loc[df_test_2.index] # DataFrame.index,且两个表的索引列一一对应,正确
# 案例2
df_test = pd.DataFrame(
data=[
['a'],
['A', 'B'],
range(1,3)
],
index=['col' + str(i) for i in range(1,4)]
).T.fillna(method='ffill').set_index(['col1', 'col2'])
# df_test筛选col1==a且col2==A的行
df_test_2 = df_test.loc[('a', 'A')] # pandas.core.series.Series # Name: (a, A)
# 根据df_test_2的索引筛选df_test
# df_test.loc[df_test_2.index] # KeyError: "Index(['col3'], dtype='object') not in index"
# Index(['col3'], dtype='object')
# 解决办法: 避免筛选结果是Series
df_test_2 = df_test.loc[[('a', 'A')]] # pandas.core.frame.DataFrame
df_test.loc[df_test_2.index]