Преобразование фрейма данных возврата акций в многоиндексный фрейм данных

#python #pandas #dataframe

#python #pandas #фрейм данных

Вопрос:

У меня есть фрейм данных с датой в качестве индекса и 35 столбцами. Имя столбцов — это имя запаса. Значения представляют доходность акций.

Я хочу преобразовать этот фрейм данных в многоиндексный фрейм данных с датой в качестве индекса 1-го уровня и названием акции в качестве индекса 2-го уровня и единственным столбцом, показывающим возвращаемое значение акций.

Я уже пробовал это, но я не получил ожидаемый фрейм данных.

 df.set_axis(df.columns.str.split(' ', 1, expand=True), 1, 0).stack(0)
 

Я ожидаю чего-то подобного этому примеру.

Ответ №1:

Использование:

 df.stack().rename('value_col').to_frame()
 

где df находится ваш фрейм данных с ‘Date’ в качестве индекса.

Комментарии:

1. вау. Это так здорово. Сработало как шарм. Большое вам спасибо. Имя второго индекса по-прежнему остается пустым. Как я могу назвать индекс второго уровня как «Stock»?

2. Привет, @Dan! Вы можете сделать это, вызвав .rename_axis(index={None:'sec_level'}) before .to_frame() . Лучший!