You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python中删除NaN值并使各列数据行数一致?

处理缺失值使DataFrame各列行数一致(线性回归场景)

看起来你正在为线性回归模型清理数据,碰到了缺失值导致各列有效行数不一致的问题,这很常见,我来给你几个实用的解决方案:

方法1:删除包含缺失值的行(最直接的方式)

如果你希望保留所有列,只是去掉任何包含NaN的行,可以用dropna()方法,这会让处理后的DataFrame所有列的行数完全一致:

# 删除任何包含NaN的行
df_cleaned = df.dropna()

# 检查处理后各列的有效行数
print(df_cleaned.count(axis=0))

默认情况下dropna()会删除任何包含至少一个NaN的行(how='any'),如果你只想删除整行全是NaN的情况,可以指定how='all':

df_cleaned = df.dropna(how='all')

不过要注意:这种方法会丢失一些数据,比如你的chemical_3缺失10条,处理后最终行数会是190(所有列中最少的有效行数),因为只要某一行有一个NaN就会被删掉。

方法2:删除缺失值过多的列(如果某些列数据质量太差)

如果某列的缺失值比例太高(比如chemical_3只有190条,缺失10条),而这个变量对线性回归的影响不大,你可以考虑直接删除这一列,这样剩下的列行数就能保持一致:

# 删除指定列,比如chemical_3
df_cleaned = df.drop(columns=['chemical_3'])

# 或者删除缺失值超过一定比例的列,比如保留缺失率≤5%的列
threshold = len(df) * 0.95
df_cleaned = df.dropna(thresh=threshold, axis=1)

这种方法的好处是保留了更多的行数据,适合那些缺失严重且非关键的特征。

额外提示:线性回归的缺失值处理建议

线性回归对缺失值比较敏感,所以清理数据时要注意:

  • 如果缺失值比例很低(比如<5%),删除行是比较安全的选择,不会对模型造成太大影响
  • 如果缺失值比例较高,你也可以考虑用均值/中位数填充(不过这会引入一定的偏差),比如:
# 用均值填充数值型列的NaN
df_filled = df.fillna(df.mean())

填充后各列行数也会一致,但这种方法需要根据你的数据特性来判断是否适用。

最后,处理完后一定要用df_cleaned.count(axis=0)确认所有列的有效行数已经一致,再进入后续的模型构建环节。

内容的提问来源于stack exchange,提问作者samba

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 04:22:00