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

分层抽样后Bootstrapping:分组抽样遇‘float不可迭代’错误求助

问题解决:分组抽样时的"float object is not iterable"错误

错误原因

你的mapper生成的是每个Base对应的Score值列表,但sample(n=...)需要的是整数类型的抽样数量。当你把列表传给n参数时,内部逻辑尝试迭代这个列表(而它实际是单个数值的列表,甚至可能包含float),就会抛出"float object is not iterable"错误。

你真正需要的是:统计dfu中每个Base的行数,以此作为dfi对应分组的抽样数量,这样才能保证抽样后结构和dfu一致。

修正代码

# 重新生成mapper:统计dfu中每个Base的样本量(行数)
mapper = dfu['Base'].value_counts().to_dict()
print(mapper)

# 分组抽样,注意处理dfi中某Base数量不足的情况(可选加replace=True允许有放回)
j = dfi.groupby('Base').apply(lambda x: x.sample(n=mapper[x.name], replace=False))
print(j)

额外说明

  • 如果dfi中某个Base的行数少于dfu中对应Base的行数,不加replace=True会报错,此时根据你的需求选择:
    • replace=True:允许有放回抽样,保证抽够指定数量
    • 提前过滤掉dfi中数量不足的分组,或者调整抽样数量

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 22:31:11