如何删除DataFrame中空值行?多列场景下的高效处理方法
示例DataFrame
| Movie | Duration |
|---|---|
| Avatar | 178 |
| Spectre | |
| John Carter | 132 |
| Tangled | |
| Titanic | 195 |
处理大型DataFrame空值的批量方法
不用逐个列写判断,Pandas提供了多种批量处理空值行的方案,按需选择即可:
删除任意含空值的行
只要行内某一列有空值就直接删除,一行代码搞定:df = df.dropna()对应你的示例,执行后会移除Spectre和Tangled这两行。
仅删除全为空值的行
只移除那些所有列都是空值的行,避免误删仍有有效数据的行:df = df.dropna(how='all')你的示例里没有全空行,执行后数据不会变化。
保留至少N个非空值的行
可以指定行内至少要有多少个非空值才保留,比如要求行内至少2个非空值(对应示例就是保留Movie和Duration都有值的行):# 保留至少2个非空值的行 df = df.dropna(thresh=2)针对指定多列的空值删行
如果只在意部分列的空值,直接传列名列表给subset参数,不用逐个列写判断:# 仅针对Duration和其他指定列的空值删除对应行 df = df.dropna(subset=['Duration', 'OtherColumn1', 'OtherColumn2'])替换空值而非删除
如果删除行损失的数据过多,更推荐填充空值:- 批量给所有列填充同一个常量:
df = df.fillna(0) # 可替换为其他合适常量 - 按列类型填充统计值(数值列用均值,分类列用众数):
# 数值列用均值填充 num_cols = df.select_dtypes(include=['int64', 'float64']).columns df[num_cols] = df[num_cols].fillna(df[num_cols].mean()) # 分类列用众数填充 cat_cols = df.select_dtypes(include=['object']).columns df[cat_cols] = df[cat_cols].fillna(df[cat_cols].mode().iloc[0])
- 批量给所有列填充同一个常量:
内容的提问来源于stack exchange,提问作者user18587858
相关产品推荐
相关产品推荐

