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

如何在Pandas DataFrame中按行非空条件高效筛选列

解决Pandas筛选指定行非NaN列的高效方案

报错原因分析

你之前尝试的df.loc[df.loc[0].notnull()]报错,是因为df.loc[]默认按行筛选,而你传入的是对应列的布尔数组,维度不匹配导致索引错误,必须明确指定行和列的筛选范围。

高效可行方案

以下两种方法无需转置,直接在原DataFrame上操作,适合大表场景:

  • 基于标签索引(loc):
    如果你的“第1行”是指标签为0的行(Pandas默认索引从0开始),用此方法:

    # 筛选第0行(标签索引)非NaN的所有列
    filtered_df = df.loc[:, df.loc[0].notnull()]
    

    若“第1行”是标签为1的行,将df.loc[0]替换为df.loc[1]即可。

  • 基于位置索引(iloc):
    如果你的“第1行”是指位置上的第一行(不管行标签是什么),用此方法:

    # 筛选位置第0行(对应视觉上的第1行)非NaN的所有列
    filtered_df = df.iloc[:, df.iloc[0].notnull()]
    

    若要选位置第1行,将df.iloc[0]替换为df.iloc[1]。

方案优势

这两种方法直接通过列布尔索引筛选,避免了转置操作带来的内存占用和性能损耗,对大表的处理效率远高于转置后筛选再转置的方式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 15:55:17