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

Pandas中DataFrame指定列空值填充问题求助

Pandas中DataFrame指定列空值填充问题求助

你好呀,我来帮你搞定这个空值填充的问题~ 先理清楚你的需求:当Column_2是空值时,要用该位置之后Column_1的第一个非空值来填充,对吧?

首先得指出你原来代码里的几个问题:

  • 列名拼写错误:你写的Colunmn_2多了一个u,应该是Column_2,这会直接导致找不到列的报错
  • 对ffill()的用法理解错啦:ffill()是向前填充(用前面的非空值补当前空值),而且它根本不接受你传的那种参数,所以报错是必然的

那正确的做法其实很清晰:

  1. 先给Column_1做向后填充(bfill),这样每个位置的值就变成了该位置及之后第一个非空的Column_1值
  2. 用这个处理后的系列,去填补Column_2里的空值

直接上可用的代码,你可以复制试试:

# 先对Column_1做向后填充,得到每个位置对应的后续第一个非空值
col1_next_valid = df['Column_1'].bfill()
# 用这个结果填充Column_2的空值
df['Column_2'] = df['Column_2'].fillna(col1_next_valid)

我还给你写了完整的测试代码,你可以直接运行验证效果:

import pandas as pd
import numpy as np

# 构造和你示例一致的测试数据
df = pd.DataFrame({
    'Column_1': ['F', None, None, 'G', None, None, 'H'],
    'Column_2': ['A', 'B', None, 'C', None, 'D', 'D']
})

# 执行填充操作
col1_next_valid = df['Column_1'].bfill()
df['Column_2'] = df['Column_2'].fillna(col1_next_valid)

# 打印结果
print(df)

运行后输出的结果完全符合你的预期:

Column_1 Column_2
0        F        A
1     None        B
2     None        G
3        G        C
4     None        H
5     None        D
6        H        D

简单说下原理:bfill()方法会自动帮你定位每个位置之后第一个非空的Column_1值,而fillna()只会替换Column_2里的空值,不会改动已经有值的部分,完美匹配你的需求~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.13 18:58:10