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

如何删除Pandas DataFrame中列索引2至末列全为NaN的行?

问题

需要删除Pandas DataFrame中从列索引2到最后一列全部为NaN的行。

示例初始化代码:

import pandas as pd
import numpy as np

df = pd.DataFrame()
df['index'] = [1, 2, 3, 4,5]
df['buy'] = [ 10, 2, 6, 7,8]
df['val1'] = [1, 2, np.nan, 8, np.nan]
df['val2'] = [10, np.nan, np.nan, 28, np.nan]
df['val3'] = [11, 32, np.nan, 18, np.nan]

原始DataFrame:

index  buy  val1  val2  val3
0      1   10   1.0  10.0  11.0
1      2    2   2.0   NaN  32.0
2      3    6   NaN   NaN   NaN
3      4    7   8.0  28.0  18.0
4      5    8   NaN   NaN   NaN

期望输出:

index  buy  val1  val2  val3
0      1   10   1.0  10.0  11.0
1      2    2   2.0   NaN  32.0
3      4    7   8.0  28.0  18.0
解决方案

通过布尔索引直接筛选目标行即可:

# 保留列索引2到末尾不全为NaN的行
filtered_df = df[~df.iloc[:, 2:].isna().all(axis=1)]

print(filtered_df)

代码说明

  • df.iloc[:, 2:]:选中所有行,以及从第3列(索引2)到最后一列的所有列
  • .isna().all(axis=1):逐行检查选中列是否全部为NaN,返回布尔Series,True代表该行需要被删除
  • ~:对布尔结果取反,保留符合要求的行

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 16:45:48