将pandas dataframe聚合为多个列的百分比列

2024-04-26 09:31:24 发布

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

在福勒。数据帧:

    ps_variable_2  ps_variable_1
0       45.652174      60.000000
1       48.913043      13.333333
2       56.521739      55.555556
3       57.608696      37.777778
4       30.434783      44.444444
5       36.956522      77.777778
6       33.695652      64.444444
7       53.260870      37.777778

我想得到一个新的数据帧,有3列:顶部33%中间33%底部33%。每列有3行,如下所示:

^{pr2}$

例如,第一行包含ps_变量_1位于前33%或前3%的案例数,以及ps_变量_2分别位于前三分之一、中三分之一和后三分之一的案例数。在


Tags: 数据variable案例pspr2
1条回答
网友
1楼 · 发布于 2024-04-26 09:31:24

您可以使用rank来获得每行的百分位数,将它们剪切到顶部、中间和底部的箱子,然后对其进行计数。在

(
    df.apply(lambda x: pd.cut(x.rank(pct=True),
                              [0,1/3.0,2/3.0,1],
                              labels=["Bottom 33%","Middle 33%","Top 33%"]))
    .apply(lambda y: y.value_counts())
)
Out[549]: 
            ps_variable_2  ps_variable_1
Bottom 33%              2              3
Middle 33%              3              2
Top 33%                 3              3

相关问题 更多 >