如何将groupby输出(系列)合并回datafram

2024-10-02 10:25:23 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个这样的数据框架(投资组合)

Date    ReturnonEquity
31-Jan-10   0.67
31-Jan-10   1.00
31-Jan-10   0.49
31-Jan-10   0.15
28-Feb-10   0.80
28-Feb-10   0.08
28-Feb-10   0.54
28-Feb-10   0.77

我计算了每一次约会的净资产收益率-

^{pr2}$

它输出这样的序列(忽略值)

2010-01-31   [0.67, 1.00, 0.49, 0.15]
2010-02-28    [0.80, 0.08, 0.54, 0.77]

如何将z分数作为一个新列放回公文包中(join用数组创建列,而不像连续值)

返回日期股权收益率

31-Jan-10   0.67              0.67
31-Jan-10   1.00              1.00
31-Jan-10   0.49              0.49
31-Jan-10   0.15              0.15
28-Feb-10   0.80              0.80
28-Feb-10   0.08              0.08
28-Feb-10   0.54              0.54
28-Feb-10   0.77              0.77

提前谢谢!在


Tags: 数据框架date序列数组分数janfeb
1条回答
网友
1楼 · 发布于 2024-10-02 10:25:23

Use transform(而不是apply),正如chrisb所建议的,并将结果赋给portfolios[columname]

In [42]: portfolios['windsorized'] = portfolios.groupby(by='Date')['ROE'].transform(lambda x: (stats.zscore(mstats.winsorize(x[~np.isnan(x)],0.03))))

In [43]: portfolios
Out[43]: 
        Date   ROE  windsorized
0 2010-01-31  0.67     0.301112
1 2010-01-31  1.00     1.375348
2 2010-01-31  0.49    -0.284835
3 2010-01-31  0.15    -1.391624
4 2010-02-28  0.80     0.876605
5 2010-02-28  0.08    -1.623022
6 2010-02-28  0.54    -0.026038
7 2010-02-28  0.77     0.772454

相关问题 更多 >

    热门问题