本文介绍一种简洁高效的方法,使用pandas的`replace`与`nunique`组合,快速识别在特定列中(排除0后)包含超过1个不同非零值的数据行。
在数据分析中,常

更优解是利用pandas内置的统计能力:将0替换为NaN(自然被nunique忽略),再按行计算非空唯一值数量。nunique(axis=1)默认自动跳过NaN,因此只需一步即可完成“排除0后统计不同非零值个数”的核心逻辑。
以下是完整示例代码:
import pandas as pd
df = pd.DataFrame({
'id': [1, 2, 3, 4],
'col_A': [1, 1, 1, 0],
'col_B': [2, 1, 0, 2],
'col_C': [3, 1, 0, 3],
'col_D': [4, 1, 1, 4],
'col_E': [5, 1, 1, 5]
})
# 筛选 col_ 开头的列,将0替换为NaN,按行统计非空唯一值数量 > 1 的行
mask = df.filter(like='col_').replace(0, float('nan')).nunique(axis=1) > 1
result = df[mask].copy()
print(result)输出:
id col_A col_B col_C col_D col_E 0 1 1 2 3 4 5 3 4 0 2 3 4 5
✅ 关键优势:
⚠️ 注意事项:
该方法体现了pandas“用原生操作替代手动循环”的最佳实践,推荐作为类似场景的标准解决方案。