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

如何用Pandas筛选全NaN行并用上一行数据填充?

解决方案

代码实现

import pandas as pd
import numpy as np

# 构建示例DataFrame
df = pd.DataFrame([list(range(8))+[np.nan]*2, [np.nan]*len(range(10)), range(10), [np.nan]*2+list(range(8)), range(10)])

# 筛选出所有元素均为NaN的行
all_nan_mask = df.isna().all(axis=1)

# 用上一行数据填充这些全NaN行
df.loc[all_nan_mask] = df.shift(periods=1).loc[all_nan_mask]

print(df)

逻辑解释

  • df.isna().all(axis=1):逐行校验是否所有列都是NaN,返回布尔型Series,标记需要处理的行。
  • df.shift(periods=1):将整个DataFrame向上偏移一行,获取每行的上一行数据,再通过loc[all_nan_mask]定位到需要填充的行,赋值回原DataFrame即可完成填充。

执行代码后得到目标结果:

0    1    2    3    4    5    6    7    8    9
0  0.0  1.0  2.0  3.0  4.0  5.0  6.0  7.0  NaN  NaN
1  0.0  1.0  2.0  3.0  4.0  5.0  6.0  7.0  NaN  NaN
2  0.0  1.0  2.0  3.0  4.0  5.0  6.0  7.0  8.0  9.0
3  NaN  NaN  0.0  1.0  2.0  3.0  4.0  5.0  6.0  7.0
4  0.0  1.0  2.0  3.0  4.0  5.0  6.0  7.0  8.0  9.0

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 18:21:11