You need to enable JavaScript to run this app. Pandas如何按列优先级填充DataFrame指定列的nan空值
优惠活动
大模型
产品
解决方案
定价
更多

Pandas如何按列优先级填充DataFrame指定列的nan空值

错误原因

Series.fillna()方法的value参数仅支持标量、字典或Series类型,你传入了双列的DataFrame,因此触发类型错误。

解决方案

按照「优先用B列填充、B列为空再用C列填充」的规则,链式调用两次fillna即可实现需求:

import pandas as pd
import numpy as np

xdf = pd.DataFrame({'A':[10,20,np.nan,np.nan],'B':[15,np.nan,30,np.nan],'C':[np.nan,np.nan,35,40]})

# 按优先级填充A列空值
xdf['A'] = xdf['A'].fillna(xdf['B']).fillna(xdf['C'])

运行后输出结果和你期望的完全一致:

A     B     C
0  10.0  15.0   NaN
1  20.0   NaN   NaN
2  30.0  30.0  35.0
3  40.0   NaN  40.0

如果后续填充优先级的列数较多,也可以用批量按行取第一个非空值的写法,不用多次调用fillna:

xdf['A'] = xdf['A'].fillna(xdf[['B', 'C']].bfill(axis=1).iloc[:, 0])

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.13 21:09:01