Превратить Pandas Multi-Index в столбец
у меня есть фрейм данных с 2 уровнями индекса:
value
Trial measurement
1 0 13
1 3
2 4
2 0 NaN
1 12
3 0 34
который я хочу превратить в это:
Trial measurement value
1 0 13
1 1 3
1 2 4
2 0 NaN
2 1 12
3 0 34
Как я могу лучше всего это сделать?
мне это нужно, потому что я хочу агрегировать данные , как указано здесь, но я не могу выбрать мои колонки, если они используются в качестве индексов.
2 ответов
на reset_index() - это метод фрейма данных pandas, который будет передавать значения индекса в фрейм данных в виде столбцов. Значение параметра по умолчанию -drop=False (который сохранит значения индекса в виде столбцов).
все, что вам нужно сделать-добавить .reset_index(inplace=True)
после имени фрейма данных:
df.reset_index(inplace=True)
это на самом деле не относится к вашему делу, но это может быть полезно для других (как я 5 минут назад), чтобы знать. Если у multindex есть такие же имена, как это:
value
Trial Trial
1 0 13
1 3
2 4
2 0 NaN
1 12
3 0 34
df.reset_index(inplace=True)
не удастся вызвать колонны, которая создается не имена.
Итак, вам нужно переименовать multindex с df.index = df.index.set_names(['Trial', 'measurement'])
для:
value
Trial measurement
1 0 13
1 1 3
1 2 4
2 0 NaN
2 1 12
3 0 34
а то df.reset_index(inplace=True)
будет работать как шарм.
я столкнулся с этой проблемой после группировки по годам и месяцам на datetime-столбец (не Индекс) с именем live_date
, что означало, что и год, и месяц были названы live_date
.