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

如何让其他DataFrame复用已有DataFrame通过pd.cut生成的划分区间

解决方案

核心逻辑是固定第一次分箱的区间边界,后续分箱时直接复用该边界,避免pandas根据新数据重新计算区间。

方法1:首次分箱时同步获取边界(推荐)

调用pd.cut时添加retbins=True参数,会同时返回分箱结果和区间边界数组,直接保存这个数组后续复用即可:

import pandas as pd

# 示例df1构造代码
ages=[35.000000,
       2.000000,
      27.000000,
      14.000000,
      4.000000,
     58.000000,
     20.000000,
     39.000000,
     14.000000,
     55.000000,
      2.000000,
     29.699118]
values=[1,0,1,1,0,0,0,1,0,0,1,1]
df1=pd.DataFrame()
df1['ages']=ages
df1['values']=values

# 分箱同时获取区间边界
df1['age_groups'], age_bins = pd.cut(df1.ages, 4, retbins=True)

后续给其他DataFrame(比如df2)分箱时,直接传入保存的age_bins即可:

df2['age_groups'] = pd.cut(df2.ages, bins=age_bins)

方法2:从已有的分箱结果提取边界

如果你已经完成了df1的分箱操作,没有提前保存边界,可以直接从已生成的分箱列中提取边界:

# 从df1的分箱列提取区间对象
interval_list = df1['age_groups'].cat.categories
# 组装为边界数组
age_bins = [interval_list[0].left] + [interval.right for interval in interval_list]

# 给df2分箱
df2['age_groups'] = pd.cut(df2.ages, bins=age_bins)

注意事项

如果新DataFrame的ages列存在超出原始区间范围的数值,默认会被标记为NaN,你可以根据业务需求提前过滤异常值,或者调整pd.cut的include_lowest、right等参数适配场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 18:15:03