You need to enable JavaScript to run this app. 如何对pandas DataFrame使用0.2/0.3非整数步长进行水平分箱?
优惠活动
大模型
产品
解决方案
定价
更多

如何对pandas DataFrame使用0.2/0.3非整数步长进行水平分箱?

报错原因

pd.cut的bins参数传入单个数值时,pandas会将其识别为分箱的总数量,要求必须为正整数,因此传入步长0.2会触发类型错误。

非整数步长分箱实现方案

方案1:自定义分箱边界传入pd.cut

先通过numpy生成固定步长的分箱边界,再将边界传入bins参数即可实现指定步长分箱,代码示例如下:

import numpy as np

step = 0.2  # 可根据需求替换为0.3
# 生成分箱边界,末尾额外加一个步长是为了覆盖序列最大值
bin_edges = np.arange(f814w.min(), f814w.max() + step, step)
# 完成分箱
f814w_cut = pd.cut(f814w, bins=bin_edges)

如果需要给每个分箱赋予中心点标签(方便后续色等图的分箱统计绘图),可以增加labels参数:

# 生成每个分箱的中心点作为标签
bin_labels = bin_edges[:-1] + step/2
f814w_cut = pd.cut(f814w, bins=bin_edges, labels=bin_labels)

方案2:取整法快速分组(适合分箱统计场景)

如果不需要返回Categorical类型的分箱结果,只需要按步长分组做后续统计,可直接用数值取整的方法实现,执行效率更高:

step = 0.2
# 新增列存储每条数据所属分箱的左边界
f814w['bin_left'] = (f814w // step) * step
# 后续可直接基于bin_left列做groupby统计

内容的提问来源于stack exchange,提问作者surviving-grad

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.16 06:36:05