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

使用pandas如何仅将指定列的NaN值与负数替换为0

data frame

错误原因

之前的操作是直接对整个DataFrame做了条件替换,没有限定操作的列范围,导致满足条件的行全列数值都被修改。

正确操作方法

方法1:已知最后一列的列名(假设列名为value)

单独对目标列执行替换操作即可:

  1. 替换NaN为0
df['value'] = df['value'].fillna(0)
  1. 替换负值为0
df.loc[df['value'] < 0, 'value'] = 0

也可以合并为一行代码:

df['value'] = df['value'].where(df['value'] >= 0, 0).fillna(0)

方法2:未知列名,固定操作最后一列

先通过索引取到最后一列的列名,再执行上述操作:

# 取最后一列列名
last_col = df.columns[-1]
# 替换NaN和负值
df[last_col] = df[last_col].fillna(0)
df.loc[df[last_col] < 0, last_col] = 0

注意事项

不要省略loc方法中第二个参数的列名指定,如果写成df[df[last_col] < 0] = 0,就会把满足条件的整行所有列都赋值为0,就是之前遇到的异常情况。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 06:18:00