Skip to main content
 首页 » 编程设计

python之如何用 Pandas 列的最大值替换无限值

2025年05月04日15qlqwjy

我有一个看起来像的数据框

City   Crime_Rate 
 
A      10 
 
B      20  
 
C      inf 
 
D      15  

我想用 Crime_Rate 列的最大值替换 inf,这样我得到的数据框应该看起来像

City   Crime_Rate 
 
A      10 
 
B      20  
 
C      20 
 
D      15 

我试过了

df['Crime_Rate'].replace([np.inf],max(df['Crime_Rate']),inplace=True) 

但是 python 将 inf 作为最大值,我哪里出错了?

请您参考如下方法:

先过滤掉inf值,然后得到Series的max:

m = df.loc[df['Crime_Rate'] != np.inf, 'Crime_Rate'].max() 
df['Crime_Rate'].replace(np.inf,m,inplace=True) 

另一种解决方案:

mask = df['Crime_Rate'] != np.inf 
df.loc[~mask, 'Crime_Rate'] = df.loc[mask, 'Crime_Rate'].max() 
 
print (df) 
  City  Crime_Rate 
0    A        10.0 
1    B        20.0 
2    C        20.0 
3    D        15.0