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

如何仅删除Pandas DataFrame中第三列之后全为NaN的行

Pandas 筛选删除第三列后全为NaN的行

解决方法

核心逻辑是选中第三列之后的所有列,判断每行是否存在非空值,仅保留符合条件的行即可,代码如下:

import pandas as pd

# 读取本地CSV文件生成DataFrame
df = pd.read_csv("你的csv文件路径.csv")

# 仅保留第三列之后存在至少1个非空值的行
df = df[df.iloc[:, 3:].notna().any(axis=1)]

代码说明

  • df.iloc[:, 3:]:通过位置索引选中所有行、以及索引为3开始到末尾的所有列(Pandas列索引从0开始,索引3正好对应示例中的「1970」列,即第三列「系列」之后的第一列)
  • notna():将所有非NaN值转为True,NaN值转为False
  • any(axis=1):按行判断,只要该行有一个True(即存在非空值)就返回True
  • 最后通过布尔索引筛选,会自动丢弃第三列之后全为NaN的行,符合你的示例中删除法国、西班牙两行的需求

可选写法

如果你更习惯用列名做筛选,也可以指定起始列名:

df = df[df.loc[:, '1970':].notna().any(axis=1)]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 06:54:02