dropna()默认删除含任意NaN的整行;axis控制方向(0删行、1删列);how设条件(any/any)、thresh设非空下限;subset限定检查列。
直接用 dropna() 就能删掉含缺失值的行,但想删得准、不误伤,得看清楚几个关键参数怎么配。
不加参数时,df.dropna() 等价于 df.dropna(axis=0, how='any'),意思是:只要某一行里有一个 NaN、None 或 pd.NaT,整行就扔掉。
inplace=True
axis=0(默认)按行操作,axis=1 按列操作:
df.dropna(axis=0):删掉含缺失值的行(常用)df.dropna(axis=1):删掉含缺失值的列(谨慎!可能直接丢掉一个特征)axis='index' 或 axis='columns',语义更清晰
esh 配合用how 决定触发条件,thresh 设最低保留门槛——后者优先级更高:
how='any'(默认):一个缺失就删how='all':整行/列全空才删(常用于过滤全 NaN 列)thresh=3:保留至少有 3 个非空值的行(比 how 更灵活)dropna(thresh=5) 在 6 列数据中,相当于“最多允许 1 个缺失”不想全表扫,只关心某些列有没有缺失,就用 subset:
df.dropna(subset=['age', 'income']):只要 age 或 income 是 NaN,对应行就删subset 接的是列名列表,字符串必须和 df.columns 完全一致