如何在python中获取列与行总和的百分比

问题描述

我有一个超过 100 列的高维数据。作为一个例子,我正在分享它的简化版本,如下所示:

date    product price   amount
11/17/2019  A   10  20
11/24/2019  A   10  20
12/22/2020  A   20  30
15/12/2019  C   40  50
02/12/2020  C   40  50

我正在尝试根据下图所示的总行数计算列的百分比:

date    product price   amount
11/17/2019  A   10/(10+20)  20/(10+20)
11/24/2019  A   10/(10+20)  20/(10+20)
12/22/2020  A   20/(20+30)  30/(20+30)
15/12/2019  C   40/(40+50)  50/(40+50)
02/12/2020  C   40/(40+50)  50/(40+50)

有没有办法对高维数据有效地做到这一点?谢谢。

解决方法

除了提供的链接 (Normalize rows of pandas data frame by their sums) 之外,您还需要找到特定的列,因为前两列是非数字的:

cols = df.columns[2:]
df[cols] = df[cols].div(df[cols].sum(axis=1),axis=0)
Out[1]: 
         date product              price             amount
0  11/17/2019       A 0.3333333333333333 0.6666666666666666
1  11/24/2019       A 0.3333333333333333 0.6666666666666666
2  12/22/2020       A                0.4                0.6
3  15/12/2019       C 0.4444444444444444 0.5555555555555556
4  02/12/2020       C 0.4444444444444444 0.5555555555555556

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...