You need to enable JavaScript to run this app. 如何用从1起始的连续自然数按序填充数据帧中的Nan值?
优惠活动
大模型
产品
解决方案
定价
更多

如何用从1起始的连续自然数按序填充数据帧中的Nan值?

实现方案

顺着你现有fillna写法的入参配置

你写的df['Columns'] = df['Columns'].fillna(xxx)的写法完全可行,只要把xxx换成和列长度匹配、从1开始的连续自然数序列就行,完整代码是:

df['Columns'] = df['Columns'].fillna(range(1, len(df) + 1))

这里的逻辑很简单:fillna的第一个填充参数,既可以传单个固定值做全局统一替换,也可以传和原列索引对齐的序列,逐行匹配填充值。你现在的目标列全为NaN,生成的range(1, len(df)+1)长度刚好和列一致,默认行索引和原df的0、1、2、3行完全对齐,能把每个位置的NaN替换成从1递增的连续数,完全匹配预期效果。

更省事的等价写法

因为你现在的目标列全是NaN,根本没必要走fillna判断哪些位置是空值的冗余逻辑,直接整列赋值就行,代码更短跑得还快:

df['Columns'] = range(1, len(df) + 1)

跑出来的结果和预期完全一样,Columns列逐行就是1、2、3、4。

通用场景补充

如果之后遇到不是全列空、只有部分位置是空值的情况,也想给这些空值按顺序填从1开始的连续数、保留原来的非空值,只要把填充序列的索引和空值所在的行号对齐再传给fillna就行:

# 找出所有空值的行索引
na_row_idx = df.loc[df['Columns'].isna(), 'Columns'].index
# 生成和空值数量匹配的连续自然数,绑定对应空值的行索引
fill_series = pd.Series(range(1, len(na_row_idx) + 1), index=na_row_idx)
# 执行填充
df['Columns'] = df['Columns'].fillna(fill_series)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.31 13:36:03