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

pandas如何用apply()遍历DataFrame将大于1的数值改为1

pandas DataFrame全表数值替换实现方案

你需要将records表中所有大于1的数值统一替换为1,仅保留0、1两类值,可参考如下实现方式:

最优方案:向量化操作(推荐,性能最高)

直接利用pandas的向量化特性,无需遍历,一行代码即可完成:

records[records > 1] = 1

也可以用where方法实现相同效果:

records = records.where(records <= 1, 1)

apply实现方案

如果需要使用apply完成遍历,正确写法如下:

# 方式1:apply嵌套遍历每列的每个元素
records = records.apply(lambda col: col.apply(lambda val: 1 if val > 1 else val))

# 方式2:旧版本pandas可使用applymap直接遍历全表所有元素
records = records.applymap(lambda val: 1 if val > 1 else val)

你原来的代码存在3处问题:

  • 三元表达式缺少else分支,Python中1 if x>1的写法不合法,必须补充else后的返回值
  • apply默认传入的参数是整列数据,不是单个元素,无法直接和1做比较
  • 不需要手动写for循环,apply会自动完成遍历操作

如果你的表中包含非数值列,建议先筛选数值列操作,避免类型报错:

num_cols = records.select_dtypes(include='number').columns
records[num_cols] = records[num_cols].where(records[num_cols] <=1, 1)

参考示例图:
示例图片1
示例图片2

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 02:18:01