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

如何删除Pandas DataFrame中除NaN外所有行值均相同的列

实现方法

你可以通过列级的规则过滤完成需求,核心逻辑为:对每列先剔除空值后统计唯一值数量,若唯一值数量为1则删除该列,其余列保留。

完整可运行代码如下:

import pandas as pd
import numpy as np

# 构造测试数据集
df = {'brand_no':['BH 1', 'BH 2', 'BH 5', 'BH 7', 'BH 6'],
       '1240000601_min':[5.87,5.87,5.87,5.87,np.nan],
       '1240000601_max':[8.87,7.47,10.1,1.9,10.8],
      '1240000603_min':[5.87,np.nan,6.5,2.0,7.8],
       '1240000603_max':[8.57,7.47,10.2,1.0,10.2],
      '1240000604_min':[5.87,5.67,6.9,1.0,7.8],
       '1240000604_max':[8.87,8.87,8.87,np.nan,8.87],
      '1240000605_min':[15.87,15.67,16.9,1.0,17.8],
       '1240000605_max':[18.11,17.47,20.1,1.9,22.6],
      '1240000606_min':[8.12,8.12,np.nan,8.12,np.nan],
       '1240000606_max;':[np.nan,7.47,10.1,1.9,np.nan]}
df = pd.DataFrame(df)

# 核心过滤逻辑
filtered_df = df.loc[:, df.apply(lambda col: col.dropna().nunique() != 1)]

# 查看结果
print(filtered_df)

逻辑说明

  1. 对DataFrame的每列执行dropna()剔除NaN值,再用nunique()统计剩余值的唯一值数量
  2. 仅保留唯一值数量不等于1的列,自动剔除「除NaN外所有值都相同」的列
  3. 如果你需要同时删除全为NaN的列,可以把过滤规则调整为:
filtered_df = df.loc[:, df.apply(lambda col: col.dropna().nunique() not in (0,1))]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.15 02:06:06