Конвертировать двойной объект groupby в dataframe - PullRequest
0 голосов
/ 03 июля 2018

В настоящее время я использую свой фрейм данных с полем datetime для генерации ежемесячной серии возвратов по различным тикерам.

return_series=data.groupby([data['Date'].dt.year,data['Date'].dt.month]).apply(monthly_returns)

Текущий вывод выглядит примерно так, где значениями кортежей являются pnl, capital и return.

Date  Date
2008  6         (-742.58, 150001.16, -0.495049504951)
      7         (123142.08, 299304.14, 41.1427920777)
      8         (-5963.05, 426217.67, -1.39906212711)
      9       (-137316.34, 868529.72, -15.8102062414)
      10             (4503.44, 685906.3, 0.656567814)

Я бы хотел разделить кортеж на три столбца (Capital, PnL, Returns) и изменить столбцы Dates на «Год, Месяц».

Функция ежемесячного возврата агрегирует по символам за данный месяц

def помесячно_ возврат (df_monthly):

symbols_pnl = df_monthly.groupby (df_monthly [ 'Символ']). Применить (symbol_return) symbols_invested_capital = df_monthly.groupby (df_monthly [ 'Символ']). применить (symbol_capital)

возвращение (сумма (symbols_pnl), сумма (symbols_invested_capital), сумма (symbols_pnl) / сумма (symbols_invested_capital) * 100)

Входные данные суточных значений позиций

Дата Символ Позиция Предыдущее Положение Цена Exec Цена 24.06.2008 ABC 100 0 5 4.85 25.06.2008 EFG 200 150 10 9,8

1 Ответ

0 голосов
/ 03 июля 2018

Разбить кортеж на несколько столбцов можно, используя что-то вроде этого

data[['Capital', 'PnL', 'Returns']] = data[column_name_tuple].apply(pd.Series)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...