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

Pandas如何仅将指定列中全为0的行的0值替换为NaN

你当前的代码会将目标三列中所有的0都替换为NaN,不符合「仅三列值全为0的行才替换该行三列值」的要求。

你可以先通过布尔掩码筛选出符合替换条件的行,再针对性赋值,实现方案如下:

依赖导入

import pandas as pd
import numpy as np

核心实现代码

cols = ['value1', 'value2', 'value3']
# 生成布尔掩码:对应行的三列值全为0时为True
mask = (df[cols] == 0).all(axis=1)
# 对符合条件的行的目标列赋值为NaN
df.loc[mask, cols] = np.nan

完整可运行示例

# 生成示例DataFrame
df = pd.DataFrame([{'id': 0, 'value1': 22, 'value2': 1, 'value3': 7},
 {'id': 1, 'value1': 0, 'value2': 0, 'value3': 0},
 {'id': 2, 'value1': 0, 'value2': 0, 'value3': 0},
 {'id': 3, 'value1': 4, 'value2': 1, 'value3': 25},
 {'id': 4, 'value1': 5, 'value2': 0, 'value3': 24},
 {'id': 5, 'value1': 0, 'value2': 0, 'value3': 3}])

cols = ['value1', 'value2', 'value3']
mask = (df[cols] == 0).all(axis=1)
df.loc[mask, cols] = np.nan

print(df)

运行后输出结果和你给出的预期完全一致。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 08:36:05