计算pandas DataFrame中的行百分比?

发布于 2021-01-29 16:15:06

我将数据存储在pandas DataFrame中,如下所示:

cat  val1   val2   val3   val4
A    7      10     0      19
B    10     2      1      14
C    5      15     6      16

我想计算cat每个值具有的类别()的百分比。

例如,对于category Aval1为7,行总计为36。结果值为7/36,因此val1是category的19.4%A

我的预期结果如下所示:

cat  val1   val2   val3   val4
A    .194   .278   .0     .528
B    .370   .074   .037   .519
C    .119   .357   .143   .381

有一个简单的方法来计算这个吗?

关注者
0
被浏览
118
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    div +总和

    对于矢量解决方案,将数据帧除axis=0以其总和axis=1。您可以使用set_index+reset_index忽略标识符列。

    df = df.set_index('cat')
    res = df.div(df.sum(axis=1), axis=0)
    
    print(res.reset_index())
    
      cat      val1      val2      val3      val4
    0   A  0.194444  0.277778  0.000000  0.527778
    1   B  0.370370  0.074074  0.037037  0.518519
    2   C  0.119048  0.357143  0.142857  0.380952
    


推荐阅读
知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看