Ранее я использовал pandas.Panel
для хранения нескольких фреймов данных, по одному на дату в списке дат.
Начиная с устаревших панелей, я пытаюсь перейти на использование мультииндексного фрейма данных.
В качестве примера у меня есть следующие данные:
dates = pandas.date_range('20180101', periods=3)
stocks = ['AAPL', 'GOOG', 'MSFT', 'AMZN', 'FB']
До устаревания я мог бы создать панель следующим образом:
pnl = pandas.Panel(items=dates, major_axis=stocks, minor_axis=stocks, dtype=float)
Теперь у меня есть 1 кадр данных на дату, например, выбирая первый:
pnl['2018-01-01']
возвращает кадр данных следующим образом:
![enter image description here](https://i.stack.imgur.com/bGS1B.png)
Теперь, однако, согласно совету в предупреждении о дефракции, я создаю мультииндексный фрейм данных:
tuples = list(itertools.product(dates, stocks))
index = pandas.MultiIndex.from_tuples(tuples, names=['date', 'stock'])
df = pandas.DataFrame(index=index, columns=stocks, dtype=float)
Полученный кадр данных теперь выглядит так:
![enter image description here](https://i.stack.imgur.com/x5unf.png)
Пока все хорошо ...
Заполнение кадра данных:
У меня есть pandas.Series
данных для данной пары акций, с одной записью на дату.
Например:
data = pandas.Series([1.3, 7.4, 8.2], index=dates)
Серия выглядит так:
2018-01-01 1.3
2018-01-02 7.4
2018-01-03 8.2
Freq: D, dtype: float64
Скажем, к примеру, эти данные для биржевой пары ['GOOG','MSFT']
.
Я хотел бы установить все ['GOOG','MSFT']
записей.
С моей панелью я мог бы очень легко сделать это, используя следующий краткий синтаксис:
pnl.loc[:,'GOOG','MSFT'] = data
Какой самый простой способ выбрать все элементы ['GOOG','MSFT']
из моего мультииндексного фрейма данных и установить их для моего объекта pandas.Series
(т.е. дата для даты)?