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

如何替换Pandas DataFrame指定列中的所有负值?

只替换DataFrame指定列中负值的方法

没问题,针对你想要只修改B列负值、保留其他列原样的需求,这里有几种简单高效的实现方式,都是pandas里常用的操作:

方法1:用loc直接定位修改(最直观)

这是最容易理解的方式,通过布尔索引筛选出B列中值为负的行,然后直接赋值替换:

# 把B列的负值替换为你需要的数值,这里示例用0,可自行修改
df_1.loc[df_1['B'] < 0, 'B'] = 0

执行后,只有B列的-5会被替换成0,其他列的负值(比如A列的-1、C列的-9)完全不受影响。

方法2:用mask或where方法(更简洁的链式操作)

如果你习惯链式调用,可以用mask方法——它会把满足条件的元素替换成指定值:

df_1['B'] = df_1['B'].mask(df_1['B'] < 0, 0)

或者用where方法,逻辑刚好相反:保留满足条件(值≥0)的元素,替换不满足的:

df_1['B'] = df_1['B'].where(df_1['B'] >= 0, 0)

这两种方法的效果和loc完全一致,只是写法更简洁。

方法3:用apply自定义逻辑(适合复杂场景)

如果你的替换逻辑更复杂(比如根据不同负值替换成不同值),可以用apply配合lambda函数:

df_1['B'] = df_1['B'].apply(lambda x: 0 if x < 0 else x)

不过对于简单的负值替换,前面两种方法的性能会更好,因为apply是逐元素操作,而前两种是向量化操作。

修改后的结果示例

替换完成后,你的DataFrame会变成这样:

A  B  C
2017-01-01 00:01:00 -1  4  7
2017-01-01 00:02:00  2  0  8
2017-01-02 00:01:00  3  6 -9

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 08:14:13