熊猫非常简单来自分组依据的总大小的百分比


问题内容

我在看似非常简单的操作上遇到了麻烦。最简单的方式是通过诸如手术之类的方法从一个小组中获得总数的百分比df.groupby['col1'].size()。分组后我的DF看起来像这样,我只想占总数的百分之一。我记得以前使用过此语句的变体,但现在无法使它起作用:percent = totals.div(totals.sum(1), axis=0)

原始DF:

       A   B   C
    0  77   3  98
    1  77  52  99
    2  77  58  61
    3  77   3  93
    4  77  31  99
    5  77  53  51
    6  77   2   9
    7  72  25  78
    8  34  41  34
    9  44  95  27

结果:

df1.groupby('A').size() / df1.groupby('A').size().sum()

    A
    34    0.1
    44    0.1
    72    0.1
    77    0.7

到目前为止,这是我想出的方法,这似乎很合理:

df.groupby('col1').size().apply(lambda x: float(x) / df.groupby('col1').size().sum()*100)

问题答案:

通过使用以下命令在形状为(3e6,59)的DF上获得良好的性能(3.73s):
df.groupby('col1').size().apply(lambda x: float(x) / df.groupby('col1').size().sum()*100)