Skip to main content
 首页 » 编程设计

python之Pandas 将行除以总数

2025年05月04日23myhome

我有这个 df:

Name    num1  num2   num3   
A       1      2      3     
B       4      5      6     
C       7      8      9     

我的目标是将每一行除以总数。这是我想出的:

df.loc[:,"num1":"num3"] = df.loc[:,"num1":"num3"].div(df["total"], axis=0) 

效果很好。但是,如果在 num3 之后添加了更多的“numx”列,我将不得不手动将代码更新为“num1”:“numx”。有没有办法解决这个问题?

请您参考如下方法:

首先选择匹配的列:

In [21]: cols = df.columns[df.columns.str.contains('^num\d+')] 

然后将这些行中的元素除以它们的总和(为每一行计算):

In [22]: df[cols] = df[cols].div(df[cols].sum(axis=1), axis=0) 
 
In [23]: df 
Out[23]: 
  Name      num1      num2   num3 
0    A  0.166667  0.333333  0.500 
1    B  0.266667  0.333333  0.400 
2    C  0.291667  0.333333  0.375