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

如何用等长Series填充Pandas DataFrame列中的对应缺失值?

解决Pandas按顺序填充对应缺失值的问题

你当前代码只替换了第一个缺失值,原因是fillna会按索引匹配填充:你创建的pd.Series(['unknown1', 'unknown2'])默认索引是[0,1],但DataFrame中缺失值的索引是0和3,只有索引0能匹配,所以第二个缺失值没被更新。

下面是两种可行的解决方法:

方法一:匹配缺失值索引创建填充Series

先定位所有缺失值的索引,再用这些索引生成填充用的Series,确保索引完全对应:

import pandas as pd

df = pd.DataFrame({'animals': [None, 'cat', 'dog', None, 'hippo', 'elephant']})

# 获取缺失值的索引列表
na_indices = df[df['animals'].isna()].index
# 用缺失值索引创建填充Series
fill_series = pd.Series(['unknown1', 'unknown2'], index=na_indices)
# 执行填充
new_df = df['animals'].fillna(fill_series)

运行后new_df的结果:

0    unknown1
1         cat
2         dog
3    unknown2
4        hippo
5     elephant
Name: animals, dtype: object

方法二:直接通过掩码定位赋值

用布尔掩码找到缺失值位置,直接按顺序赋值,逻辑更直观:

import pandas as pd

df = pd.DataFrame({'animals': [None, 'cat', 'dog', None, 'hippo', 'elephant']})

# 生成缺失值的布尔掩码
na_mask = df['animals'].isna()
# 给掩码对应的位置按顺序填充指定值
df.loc[na_mask, 'animals'] = ['unknown1', 'unknown2']

此方法会直接修改原DataFrame,最终df['animals']的结果和方法一一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 02:00:00