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

已掌握fillna统一填充,如何为各缺失值填充不同自定义值?

按行号(索引)为缺失值填充不同内容的实现方法

你可以通过行索引映射的方式,为每个缺失值匹配对应自定义值,下面是两种实用方案:

方案1:索引映射+fillna()填充

先定义「行索引-目标填充值」的对应字典,再结合fillna()完成填充:

import pandas as pd

# 模拟你的数据集
df = pd.DataFrame({
    'car': ['bmw 320i', 'plymouth reliant', 'honda civic'],
    'count': [None, None, None]
})

# 设定每行索引对应的填充值
fill_map = {0: 2, 1: 1, 2: 3}

# 执行填充
df['count'] = df['count'].fillna(df.index.map(fill_map))

print(df)

运行后输出:

car  count
0        bmw 320i    2.0
1  plymouth reliant    1.0
2     honda civic    3.0

方案2:apply()逐行判断填充

如果需要更灵活的逻辑(比如根据行号计算填充值),可以用apply()遍历每行处理:

df['count'] = df.apply(
    lambda row: fill_map[row.name] if pd.isna(row['count']) else row['count'],
    axis=1
)

这里row.name就是当前行的索引(行号),你可以把fill_map[row.name]替换成自定义计算式,比如row.name + 1这类动态逻辑。

关于你之前代码失败的原因

你直接给fillna()传入df.index是无效的——fillna()需要的是具体填充值(或能映射到值的对象),直接传索引无法关联到你想要的自定义值,必须先把索引映射成目标填充值再传入。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 01:42:50