Превратить 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.