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

如何将Pandas DataFrame指定列中的负值替换为Null/NaN?

解决Pandas仅替换指定列负值为NaN的问题

你之前的代码会把整行设为NaN,是因为你选中了满足条件的整行数据再赋值,而不是只定位目标列。下面给你几个可行的正确写法:

方法1:使用loc精准定位(最直观)

通过loc同时指定行筛选条件和目标列,只修改该列的对应值:

import numpy as np
import pandas as pd

# 假设df_1是你的DataFrame
df_1.loc[df_1['Column D'] < 0, 'Column D'] = np.nan

方法2:使用mask方法

mask会在条件为True时将对应元素替换为NaN(默认值),直接对目标列操作即可:

df_1['Column D'] = df_1['Column D'].mask(df_1['Column D'] < 0)

方法3:使用replace结合lambda

适合需要自定义替换逻辑的场景,这里用lambda判断负值并替换:

df_1['Column D'] = df_1['Column D'].replace(lambda x: np.nan if x < 0 else x)

这几个方法都只会修改Column D中的负值,不会影响其他列的数据。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 08:05:37