Ваше решение работает отлично.Я полагаю, что проблема заключается в том, как определяется ваш индекс.Ниже приведен пример того, как вы можете явно установить свой индекс и как должен выглядеть df.index
после успешного определения MultiIndex
:
df = pd.DataFrame({'City Name': ['Atlanta']*4 + ['Chicago']*4,
'Threshold': [86]*4 + [90]*4,
'Temp': [87, 86, 85, 89, 92, 90, 85, 65]})
df = df.set_index(['City Name', 'Threshold'])
df['Temp>Threshold'] = df['Temp'] > df.index.get_level_values('Threshold')
print(df)
Temp Temp>Threshold
City Name Threshold
Atlanta 86 87 True
86 86 False
86 85 False
86 89 True
Chicago 90 92 True
90 90 False
90 85 False
90 65 False
print(df.index)
MultiIndex(levels=[['Atlanta', 'Chicago'], [86, 90]],
labels=[[0, 0, 0, 0, 1, 1, 1, 1], [0, 0, 0, 0, 1, 1, 1, 1]],
names=['City Name', 'Threshold'])