У меня есть многоиндексный фрейм данных, изначально похожий на этот (извините за формат изображения - подробнее об этом позже):
![enter image description here](https://i.stack.imgur.com/LTAEP.png)
Это фрейм данных хранится в таблице SQLite. Когда я использую read_sql_query
, указав index_col=['id', 'year', 'interval']
, я получаю версию фрейма данных, в которой имена столбцов сглажены:
df = pd.DataFrame({"('LSSR.EVI', 'anomaly')": {('102003425432342620301682804267026993600',
2010,
15): -1.2427875479709378,
('102003425432342620301682804267026993600', 2010, 16): -1.5810953949599622,
('102003425432342620301682804267026993600', 2010, 17): -0.21514085140646852,
('102003425432342620301682804267026993600', 2010, 18): 2.8447636755956602,
('102003425432342620301682804267026993600', 2010, 19): 5.387294849602293},
"('LSSR.EVI', 'delta')": {('102003425432342620301682804267026993600',
2010,
15): -0.08247779546308173,
('102003425432342620301682804267026993600', 2010, 16): -0.13964240787494409,
('102003425432342620301682804267026993600', 2010, 17): -0.14732367140515223,
('102003425432342620301682804267026993600', 2010, 18): -0.048977311394384104,
('102003425432342620301682804267026993600', 2010, 19): 0.12874585657790194}})
df.index.rename(['id','year','interval'], inplace=True)
Как видите, два уровня иерархии столбцов были сплющенный - то есть в скобках и разделенный запятой. Причина для изображения выше в том, что я понял, что экспорт фрейма данных с to_dict
дает тот же результат, и я не знал, как поделиться им в SO, но, надеюсь, другого df будет достаточно, чтобы решить проблему. Мои вопросы:
- Как я могу восстановить иерархию исходного фрейма данных? Я пробовал
.unstack()
, но, похоже, он как-то работает только на axis=0
- Что на самом деле представляет номенклатура ('col1', 'col2') и как получить доступ к различным столбцам? Я перепробовал множество комбинаций
df['LSSR.EVI']
, df[('LSSR.EVI')]
, df[('LSSR.EVI', 'anomaly')]
, но все они возвращают ошибки, и у меня такое ощущение, что я здесь упускаю критический логический шаг.