将双重groupby对象转换为数据帧

时间:2018-07-03 15:51:29

标签: python pandas

目前,我正在将数据框与日期时间字段配合使用,以生成不同报价行情的月度回报系列。

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

当前输出看起来像这样,其中元组值为pnl,大写和返回。

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列更改为Year,Month。

每月收益函数在给定月份的符号上进行汇总

def month_returns(df_monthly):

symbols_pnl = df_monthly.groupby(df_monthly ['Symbol'])。apply(symbol_return)       symbol_invested_capital = df_monthly.groupby(df_monthly ['Symbol'])。apply(symbol_capital)

return(sum(symbols_pnl),sum(symbols_invested_capital),sum(symbols_pnl)/ sum(symbols_invested_capital)* 100)

输入数据每日位置值

日期符号位置上一个位置价格执行价格 6/24/2008 ABC 100 0 5 4.85 2008年6月25日EFG 200150 10 9.8

1 个答案:

答案 0 :(得分:0)

可以使用类似的方法将元组拆分为多列

data[['Capital', 'PnL', 'Returns']] = data[column_name_tuple].apply(pd.Series)