【问题标题】:Convert double groupby object into dataframe将双 groupby 对象转换为数据框
【发布时间】:2018-07-03 15:51:28
【问题描述】:

目前我正在使用带有日期时间字段的数据框来生成不同股票代码的月度回报系列。

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)并将日期列更改为显示年、月。

每月返回函数汇总给定月份的符号

defmonthly_returns(df_monthly):

symbols_pnl=df_monthly.groupby(df_monthly['Symbol']).apply(symbol_return) symbols_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)

输入数据每日头寸值

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

【问题讨论】:

  • 你能告诉我们你的monthly_returns函数是什么样的吗?此外,一些示例输入数据也会有所帮助。
  • 请在您的问题中,而不是作为评论。

标签: python pandas


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2021-12-01
    • 1970-01-01
    • 2017-04-16
    • 2018-03-31
    • 2023-03-14
    • 1970-01-01
    • 2021-11-18
    • 2022-01-15
    • 1970-01-01
    相关资源
    最近更新 更多