如何删除DataFrame中指定索引列含NaN或空值的行?
解决DataFrame按列索引删除含NaN/空值行的问题
如果你无法使用subset参数,直接通过列索引定位目标列,再过滤掉包含NaN(或空字符串)的行即可。以下是具体实现:
核心思路
- 用
iloc按索引定位目标列(示例中为列索引2) - 通过
notna()判断该列的非NaN值,生成布尔筛选器 - 若需同时处理空字符串,额外添加字符串非空判断
示例代码
import pandas as pd import numpy as np # 构造你的示例DataFrame data = [ [12, 125, 36, 45, 665], [15, 212, 12, 65, 62], [65, 9, np.nan, 98, 84], [21, 54, 78, 5, 654], [211, 65, 58, 26, 65] ] df = pd.DataFrame(data) # 仅过滤NaN值的情况 filtered_df = df[df.iloc[:, 2].notna()] # 若需同时过滤空字符串(包括全空格),使用以下代码 # filtered_df = df[(df.iloc[:, 2].notna()) & (df.iloc[:, 2].astype(str).str.strip() != '')] print(filtered_df)
输出结果
0 1 2 3 4 0 12 125 36 45 665 1 15 212 12 65 62 3 21 54 78 5 654 4 211 65 58 26 65
内容的提问来源于stack exchange,提问作者user16832397
相关产品推荐
相关产品推荐

