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

如何用不同新UUID填充Pandas列中的缺失值?

解决方案

你的问题出在fillna(str(uuid.uuid4()))的执行逻辑上——这行代码会先调用一次uuid.uuid4()生成一个固定UUID字符串,再把所有缺失值替换成这个固定值,自然所有缺失项都一样。要实现每个缺失值生成新UUID,得让函数在每个缺失位置单独执行,这里有几种实用方法:

方法1:使用apply遍历处理

直接对列应用lambda函数,判断每个值是否缺失,缺失则生成新UUID:

import pandas as pd
import uuid

# 示例DataFrame
df = pd.DataFrame({"B": [uuid.uuid4(), None, uuid.uuid4(), None]})

# 填充缺失值
df["B"] = df["B"].apply(lambda x: str(uuid.uuid4()) if pd.isna(x) else x)

方法2:使用where保留非缺失值,替换缺失值

利用where方法,对非缺失值保留原值,缺失值通过apply生成新UUID:

df["B"] = df["B"].where(pd.notna(df["B"]), df["B"].apply(lambda _: str(uuid.uuid4())))

方法3:批量生成对应数量的UUID替换

先统计缺失值的数量,生成对应个数的UUID列表,再替换到缺失位置:

null_count = df["B"].isna().sum()
# 生成对应数量的UUID字符串列表
uuid_list = [str(uuid.uuid4()) for _ in range(null_count)]
# 替换缺失值
df.loc[df["B"].isna(), "B"] = uuid_list

这几种方法都能保证每个缺失值得到唯一的UUID,根据你的习惯选择即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 20:35:54