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

Pandas列空值填充问题求助:随机数/行索引填充异常

解决DataFrame中NaN填充的两个问题

1. 为name列NaN填充不同随机数

你当前代码的问题是random.randrange(10000,100000)只生成一个随机数,Pandas会把这个值批量广播到所有NaN单元格,导致所有填充值相同。

解决代码

可以用两种方式生成对应数量的随机数序列:

  • 借助numpy生成随机整数数组:
import numpy as np
nan_mask = all_df["name"].isnull()
all_df.loc[nan_mask, "name"] = np.random.randint(10000, 100000, size=nan_mask.sum())
  • 用列表推导式生成随机数列表:
import random
nan_mask = all_df["name"].isnull()
all_df.loc[nan_mask, "name"] = [random.randrange(10000, 100000) for _ in range(nan_mask.sum())]

2. 用行索引填充name列NaN

你的代码错误在于直接使用整个DataFrame的索引数组all_df["name"].index.values,Pandas的索引对齐机制会导致赋值不匹配,无法正确填充到NaN行。

解决代码

直接提取NaN行对应的索引值赋值,或用fillna方法简化:

# 方法1:提取NaN行的索引赋值
nan_mask = all_df["name"].isnull()
all_df.loc[nan_mask, "name"] = all_df[nan_mask].index.values

# 方法2:用fillna直接填充索引
all_df["name"] = all_df["name"].fillna(all_df.index)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 00:47:05