如何仅删除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值转为Falseany(axis=1):按行判断,只要该行有一个True(即存在非空值)就返回True- 最后通过布尔索引筛选,会自动丢弃第三列之后全为NaN的行,符合你的示例中删除法国、西班牙两行的需求
可选写法
如果你更习惯用列名做筛选,也可以指定起始列名:
df = df[df.loc[:, '1970':].notna().any(axis=1)]
内容的提问来源于stack exchange,提问作者Clamo
相关产品推荐
相关产品推荐

