如何将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
相关产品推荐
相关产品推荐

