如何删除pandas dataframe中的每隔一行数据?
Pandas删除间隔缺省值空行解决方案
下面提供几种适配不同场景的处理方法:
- 场景1:确认严格每隔一行全为缺省值
这种情况直接按行索引切片效率最高,假设从0开始计数的行索引中,偶数行是有效数据、奇数行全是空行,代码如下:# 保留偶数行,若奇数行是有效数据就把==0改成==1 df = df[df.index % 2 == 0] - 场景2:待删除行是全缺省行,不一定严格间隔
用pandas自带的dropna方法,指定how='all'参数仅删除整行全为缺省值的行:
如果你读取的文件中df = df.dropna(how='all')n/a是字符串格式,没有被pandas识别为缺省值,先做替换再删除:import numpy as np # 先把字符串'n/a'替换为pandas可识别的缺省值 df = df.replace('n/a', np.nan).dropna(how='all') - 场景3:待删除行不是全空,但缺省值占比极高
可以通过thresh参数设置保留行的最少非空值数量,比如要求一行至少有20%的非空值才保留:# 计算最少需要的非空值数量,0.2可按需调整 min_non_null = int(len(df.columns) * 0.2) df = df.dropna(thresh=min_non_null)
删除空行之后如果需要重置连续的行索引,可执行以下代码:
# drop=True表示不保留旧索引作为新列 df = df.reset_index(drop=True)
内容的提问来源于stack exchange,提问作者DataSci Live
相关产品推荐
相关产品推荐

