You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将Pandas DataFrame中大于5.75的数值替换为100?

解决Pandas DataFrame替换大于指定值的问题

嘿,我完全懂你的困扰——replace()函数确实只能处理精确匹配的场景,没法直接应对“大于某个值”这类范围条件。不过Pandas里有好几个实用的方法可以轻松搞定这个需求,我给你分享几个常用方案:

方法1:使用df.loc(最直观)

loc可以结合布尔索引精准定位需要修改的区域,非常适合这种批量替换的场景:

# 先指定需要修改的列(排除第一列)
target_cols = df.columns[1:]
# 定位所有大于5.75的位置并替换为100
df.loc[df[target_cols] > 5.75, target_cols] = 100

这里df[target_cols] > 5.75会生成一个和原DataFrame结构一致的布尔矩阵,标记出所有需要替换的单元格,loc会精准定位这些位置并完成赋值。

方法2:使用np.where(灵活的条件判断)

如果你需要更灵活的多条件处理,numpy.where会是个好选择,它支持“条件满足时替换为A,否则保留原数”的逻辑:

方式A:循环处理列(可读性高)

import numpy as np

for col in df.columns[1:]:
    df[col] = np.where(df[col] > 5.75, 100, df[col])

方式B:向量化操作(效率更高)

不用循环,直接对目标列批量处理:

df[df.columns[1:]] = np.where(df[df.columns[1:]] > 5.75, 100, df[df.columns[1:]])

方法3:使用df.mask(简洁的替换逻辑)

mask方法的逻辑刚好契合你的需求:当传入的条件为True时,将对应位置的值替换为指定内容,否则保留原值:

df[df.columns[1:]] = df[df.columns[1:]].mask(df[df.columns[1:]] > 5.75, 100)

这些方法都是Pandas的向量化操作,处理50多列的DataFrame完全没问题,效率比循环遍历单元格高得多。

内容的提问来源于stack exchange,提问作者Raghava kattamudi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 06:39:50