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

如何将Pandas的Age列数值按指定范围转换为字符串标签?

Pandas 年龄列高效分箱转换为标签

直接用Pandas的pd.cut()函数就能高效解决这个问题,完全不需要逐行迭代,还能避免类型匹配问题。具体步骤如下:

  • 整理阈值与标签的顺序
    先把你的ranges字典按阈值从小到大排序,确保分箱逻辑和你预期的一致:

    ranges = {'baby': 1, 'toddler': 6, 'kid': 12, 'teen': 21, 'adult': 80, 'old': 1000}
    # 按阈值升序排序,得到有序的标签和阈值对
    sorted_ranges = sorted(ranges.items(), key=lambda x: x[1])
    # 提取分箱边界和对应标签
    bins = [-float('inf')] + [v for _, v in sorted_ranges]
    labels = [k for k, _ in sorted_ranges]
    
  • 执行分箱转换
    用pd.cut()对Age列进行向量化分箱,指定right=False让区间左闭右开(比如[1,6)对应toddler,符合你“<6替换为toddler”的逻辑):

    import pandas as pd
    
    # 示例数据
    df = pd.DataFrame({'Age': [2.0, 82.0, 15.0, 9.0, 25.0]})
    # 生成标签列
    df['Output Age'] = pd.cut(df['Age'], bins=bins, labels=labels, right=False)
    
  • 验证结果
    运行后得到的DataFrame和你预期的一致:

    AgeOutput Age
    2toddler
    82old
    15teen
    9kid
    25adult

关键说明

  • pd.cut()是向量化操作,比循环迭代快几个数量级,尤其适合大数据集;
  • right=False确保区间是左闭右开,完美匹配你“数值<阈值对应标签”的规则(比如<1是baby,1≤x<6是toddler);
  • 用-float('inf')作为起始边界,确保所有0及以下的数值都能被分到baby标签里。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 04:16:30