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

如何用pandas将DataFrame不规则年龄列规整为标准年龄区间?

Pandas不规则年龄列转标准连续区间实现方案

核心思路分两步:先统一清洗所有不规则格式的年龄值,提取区间边界;再通过分箱逻辑映射到需要的10年跨度标准区间。

步骤1:原始数据格式清洗

先处理三类异常格式:

  • 多空格替代短横分隔的区间(如41 45)
  • 带or younger标记的低龄区间
  • 带or older标记的高龄区间
    清洗时统一提取每个年龄值对应的区间上下限,存在临时列中备用,代码如下:
import pandas as pd

# 实际使用时替换为你的CSV读取逻辑即可
# df = pd.read_csv("合并后的文件.csv")
# 以下为样本测试数据
df = pd.DataFrame({
    'age': [
        '51-55','41-45','41  45','46-50','36-40','46  50','26-30','21  25',
        '36  40','31  35','26  30','21-25','56 or older','31-35','56-60',
        '61 or older','20 or younger'
    ]
})

def parse_age(value):
    value = value.strip()
    # 处理20 or younger类数据,下限按15起算
    if 'or younger' in value:
        upper = int(value.replace('or younger', '').strip())
        return 15, upper
    # 处理xx or older类数据,上限临时设为120(覆盖人类年龄上限即可)
    if 'or older' in value:
        lower = int(value.replace('or older', '').strip())
        return lower, 120
    # 处理短横、多空格分隔的普通区间,统一按空格分割取数字
    value = value.replace('-', ' ')
    num_list = [int(i) for i in value.split() if i.isdigit()]
    return num_list[0], num_list[1]

# 拆分出临时上下限列
df[['lower', 'upper']] = df['age'].apply(lambda x: pd.Series(parse_age(x)))

步骤2:映射到标准年龄区间

需要的标准区间为15-25、26-35、36-45这类10年跨度的连续区间,直接用pandas的cut分箱函数,以原始区间的下限为匹配依据即可自动归类:

# 自定义标准区间的分割边界和对应标签,可根据业务需求调整
bin_edges = [15, 26, 36, 46, 56, 66, 121]
bin_labels = ['15-25', '26-35', '36-45', '46-55', '56-65', '66+']

# 执行分箱映射
df['age_standard'] = pd.cut(
    df['lower'],
    bins=bin_edges,
    labels=bin_labels,
    right=False,
    include_lowest=True
).astype(str)

# 清洗临时列,输出最终结果
df = df.drop(columns=['lower', 'upper'])

映射结果校验

样本数据的最终匹配结果符合预期:

  • 20 or younger、21-25、21 25 → 15-25
  • 26-30、26 30、31-35、31 35 → 26-35
  • 36-40、36 40、41-45、41 45 → 36-45
  • 46-50、46 50、51-55 → 46-55
  • 56-60、56 or older、61 or older → 56-65

如果需要调整高龄区间的划分(比如把61岁以上单独设为61+),直接修改bin_edges和bin_labels的取值即可,核心逻辑不需要改动。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 17:16:17