如何使用pandas仅删除数据集末尾全为缺失值的列
解决方案
你可以通过pandas向量化操作实现需求,全程无循环,性能和你原有操作几乎一致,完全满足数千行数据的处理效率要求:
完整代码
import pandas as pd # 1. 读取数据,预分配列数可根据实际最大列数调整 df = pd.read_csv(file_path, names=list(range(100))) # 2. 计算每列是否存在至少一个非空值 col_has_value = df.notna().any(axis=0) # 3. 特殊情况处理:所有列全为空时直接返回空表 if not col_has_value.any(): df = pd.DataFrame() else: # 4. 定位最后一个存在非空值的列 last_valid_col_idx = len(col_has_value) - col_has_value[::-1].argmax() - 1 # 5. 切片保留从开头到最后一个有效列的所有内容 df = df.iloc[:, :last_valid_col_idx + 1]
逻辑说明
- 先按你原有的方式预分配足够多的列读取整份数据
- 通过
df.notna().any(axis=0)得到每列是否有非空值的布尔序列 - 将布尔序列反转后取第一个
True的位置,换算得到原序列中最后一个有值的列的索引 - 直接按索引切片即可保留中间全空列,同时删除末尾所有全空列
内容的提问来源于stack exchange,提问作者Yashovardhan99
相关产品推荐
相关产品推荐

