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

如何在Pandas DataFrame中仅移除空单元格并将下方值上移?

如何在Pandas DataFrame中仅移除空单元格并将下方值上移?

哈哈,这个问题我之前也碰到过!Pandas确实没有专门用来“删除单个空单元格并让下方值上移”的内置函数,但我们可以通过针对目标列的简单处理来实现你想要的效果,完全不用手动调整行结构~

先看你的需求:你希望保留SMA_5列的所有行不变,同时把Pandas_5列里的空值(nan)去掉,让后面的非空值依次上移填补空缺位置。实现这个需求的核心思路是:提取目标列的非空值,然后按顺序重新填充回原列。

具体实现代码

import pandas as pd

# 假设你的DataFrame名字是df
# 提取Pandas_5列的非空值,重置索引让它们按顺序排列
shifted_pandas_5 = df['Pandas_5'].dropna().reset_index(drop=True)

# 将处理后的序列重新对齐到原DataFrame的行索引,填充回Pandas_5列
df['Pandas_5'] = shifted_pandas_5.reindex(df.index).values

代码解释

  1. df['Pandas_5'].dropna()会把Pandas_5列里的所有空值去掉,只保留非空的数值,比如你的例子里就是[89, 90, 70, 31, ...];
  2. reset_index(drop=True)是为了把这些非空值的索引重置为从0开始的连续数字,确保它们的顺序是原列里的先后顺序;
  3. shifted_pandas_5.reindex(df.index)会把处理后的序列扩展到原DataFrame的行数,前面的位置用非空值填充,后面如果原列的非空值数量不够,剩下的位置会自动填充nan;
  4. 最后用.values直接赋值,就能让Pandas_5列的空值位置被后面的非空值依次上移填补,同时SMA_5列的所有行完全保留,和你想要的结果完全一致~

如果你需要对多列做同样的操作,也可以把这段逻辑封装成一个小函数,循环处理每一列就好啦!

备注:内容来源于stack exchange,提问作者ImBatman

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.14 16:49:33