首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将计算列添加到DF和绘图2行中。

将计算列添加到DF和绘图2行中。
EN

Stack Overflow用户
提问于 2016-11-02 20:23:36
回答 1查看 130关注 0票数 2

我从下面的dataframe开始,其中每一行都是一个新的尝试:

代码语言:javascript
运行
复制
    test_group   range     success
0      test        1-5         1
1      test        1-5         0
2      test        1-5         1
3      test        6-10        1
4      test        6-10        0
5      test        6-10        0
6      control     1-5         0
7      control     1-5         0
8      control     1-5         1
9      control     6-10        1
10     control     6-10        1
11     control     6-10        1

我想通过测试组和测试范围来计算平均成功值和分组。

为此,我编写了以下代码:

代码语言:javascript
运行
复制
df = df.groupby('test_group','range').success.mean()

我的结果如下

代码语言:javascript
运行
复制
test_group    range
test          1-5    0.66
              6-10   0.33
control       1-5    0.33
              6-10   1.00

理想情况下,我希望我的最终输出如下所示,这样我就可以在相同的图表上绘制两个测试组,x轴是每个范围,y轴是成功率:

代码语言:javascript
运行
复制
 test_group   range     success-rate
0      test        1-5         0.66
1      test        1-5         0.66
2      test        1-5         0.66
3      test        6-10        0.33
4      test        6-10        0.33
5      test        6-10        0.33
6      control     1-5         0.33
7      control     1-5         0.33
8      control     1-5         0.33
9      control     6-10        1.00
10     control     6-10        1.00
11     control     6-10        1.00
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-11-02 20:28:09

您可以使用变换()方法:

代码语言:javascript
运行
复制
In [35]: df['success-rate'] = df.groupby(['test_group','range'])['success'].transform('mean')

In [36]: df
Out[36]:
   test_group range  success  success-rate
0        test   1-5        1      0.666667
1        test   1-5        0      0.666667
2        test   1-5        1      0.666667
3        test  6-10        1      0.333333
4        test  6-10        0      0.333333
5        test  6-10        0      0.333333
6     control   1-5        0      0.333333
7     control   1-5        0      0.333333
8     control   1-5        1      0.333333
9     control  6-10        1      1.000000
10    control  6-10        1      1.000000
11    control  6-10        1      1.000000

Groupby.transform()方法将聚合函数应用于所有原始行

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40389121

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档