У меня есть Pandas фрейм данных в следующей форме:
Визуализация фрейма данных
Что я хотел бы сделать для каждого индекса уровня 1 (2000, ..., 2020), удалите индексы уровня 2, содержащиеся в списке, «неактивные станции», эффективно удаляя строки, связанные с индексами, из набора данных.
Мой код для этого следующий:
#getting list of level 1 one values without duplicates
level_1_values = list(dict.fromkeys(ds2.index.get_level_values(0).tolist()))
#removing all level 2 indices in inactive_stations
for value in level_1_values:
#getting Level 2 indices for each Level 1 index
station_list = ds2.loc[[value]].index.get_level_values(1).tolist()
#calculating list of indices to be removed, 'inactive_sessions'
inactive_stations = set(station_list).difference(set(active_stations))
#dropping rows associated to inactive stations
ds2.index.set_levels(ds2.loc[[value]].index.levels[1].drop(inactive_stations), level=1)
Я получаю следующую ошибку:
ValueError: На уровне 1 код max (33721)> = длина уровня (22196). ПРИМЕЧАНИЕ: этот индекс находится в несогласованном состоянии