Pandas - 根据第一列值以百分比形式转换列

Pandas - Converting columns in percentage based on first columns value

有一个包含总数和计数的数据框:

pd.DataFrame({
            'categorie':['a','b','c'],
            'total':[100,1000,500],
            'x':[10,100,5],
            'y':[100,1000,500]
         })
类别 总计 x y
一个 100 10 100
b 1000 100 1000
c 500 5 500

我喜欢将计数的列转换为基于总计的百分比:

类别 总计 x% y%
一个 100 10 100
b 1000 10 100
c 500 1 100

以下适用于系列:

(100 * df['x'] / df['total']).round(1)

如何将此应用于数据框中的所有列?

尝试通过 div()mul()astype() 方法:

df[['x%','y%']]=df[['x','y']].div(df['total'],axis=0).mul(100).astype(int)

df的输出:

    categorie   total   x       y       x%      y%
0   a           100     10      100     10      100
1   b           1000    100     1000    10      100
2   c           500     5       500     1       100