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

如何修复Pandas使用random.sample时的‘Population must be a sequence’报错

解决random.sample()处理pandas数组的报错问题

报错原因

random.sample()要求传入的采样对象是标准序列类型(如列表、元组),但df["domain"].unique()返回的是numpy.ndarray,不属于该函数认可的序列范畴,因此触发报错:Population must be a sequence. For dicts or sets, use sorted(d).

解决方案

提供两种可行的处理方式:

方式一:转成列表后使用random.sample()

将numpy数组通过tolist()转为列表,再传入random.sample():

import random

# 筛选非安全域名并去重,转为列表
insecure_domains = df[df["is_secure"] == False]["domain"].unique().tolist()
# 随机采样50个
random_sample = random.sample(insecure_domains, 50)

方式二:使用pandas内置的sample方法(更推荐)

直接利用pandas对Series的采样能力,无需额外导入random,适配性更好:

# 筛选非安全域名、去重后随机采样50个
random_sample = df[df["is_secure"] == False]["domain"].drop_duplicates().sample(n=50).tolist()

注意事项

如果非安全域名的唯一值数量不足50,上述代码会触发ValueError,可以先判断数量再调整采样数:

insecure_domains = df[df["is_secure"] == False]["domain"].unique().tolist()
# 取50和实际数量的较小值
sample_size = min(50, len(insecure_domains))
random_sample = random.sample(insecure_domains, sample_size)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 00:10:12