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

Pandas如何仅删除值为NaN的单个单元格而非整行或整列

需求可行性

该需求完全可以实现,你的需求本质是对每一列独立移除NaN值后,将剩余的有效值按原有顺序对齐到列的顶部,多余行自动补NaN(如果有效值数量和总行数一致则完全填满整列,和你给出的示例效果一致)。

实现代码

import pandas as pd
import numpy as np

# 这里替换成你自己的原始DataFrame即可,下方是模拟你场景的示例构造代码
df = pd.DataFrame({
    'Column1': range(1, 23),
    'Column2': [np.nan]*11 + list(range(1, 13)),
    'Column3': [np.nan]*20 + list(range(1, 3))
})

# 核心处理逻辑
df_result = df.apply(lambda col: pd.Series(col.dropna().values), axis=0)

# 可选:如果需要保留原始DataFrame的索引,添加下面这行
df_result.index = df.index

逻辑说明

  • 用apply方法设置axis=0按列遍历整个DataFrame
  • 对每一列单独调用dropna()移除所有NaN单元格,保留原始数值的先后顺序
  • 将清理后的有效值重新封装为Series,pandas会自动从第一行开始依次填充,没有有效值的位置默认补NaN
  • 如果需要替换末尾的空值,可后续调用fillna()方法自定义填充规则

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 00:45:03