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

Pandas中如何向前填充行非空值且保留D列原值不修改

实现方案

直接通过Pandas的向前填充方法即可实现,全程不会修改D列原始值,也能解决C列填充异常问题,代码如下:

import pandas as pd
import numpy as np

# 此处替换为你自己的原始DataFrame即可
df = pd.DataFrame({
    'A': [1, pd.NaT, pd.NaT, 5, pd.NaT, pd.NaT, 9, pd.NaT, pd.NaT],
    'B': [2, np.nan, np.nan, 6, np.nan, np.nan, 1, np.nan, np.nan],
    'C': [3.3, np.nan, np.nan, 7, np.nan, np.nan, 2, np.nan, np.nan],
    'D': [4, np.nan, np.nan, 8, np.nan, np.nan, 3, np.nan, np.nan]
})

# 备份原始D列,避免被修改
d_col = df['D'].copy()

# 对A、B、C列执行向前填充,显式指定C列为浮点型避免填充异常
df[['A', 'B', 'C']] = df[['A', 'B', 'C']].astype({'C': 'float'}).ffill()

# 还原D列原始值
df['D'] = d_col

print(df)

说明

  1. 向前填充ffill()本身就会自动用前一个非空值填充后续所有空值,直到遇到下一个非空值,完全符合你按非空行分段填充的需求,不需要手动按索引分组
  2. 提前备份D列最后还原,就能保证D列的原始值不会有任何改动
  3. 之前C列填充出现异常数值,一般是因为C列的数据类型为非数值型,填充时发生了异常类型转换,填充前显式指定C列为float类型即可解决该问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 01:45:02