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

请求实现多列数值型年龄列分箱为类别并汇总计数

年龄分箱并汇总计数的解决方案

下面提供两种常用工具的实现方法,满足将18-90+的单年度年龄数据分箱为指定组别并累计计数的需求:

Pandas(Python)实现

假设你的数据存储在一个DataFrame中,包含age(年龄,可能为数字或含90+的字符串)和count(对应年龄的汇总数)两列。

步骤1:预处理年龄列(若包含90+字符串)

先将非数字格式的年龄转为整数,方便后续分箱:

import pandas as pd

# 示例数据
data = {
    'age': ['18', '19', '29', '30', '49', '50', '64', '65', '79', '80', '90+'],
    'count': [100, 120, 90, 150, 200, 180, 160, 140, 110, 80, 50]
}
df = pd.DataFrame(data)

# 转换年龄为整数:替换'90+'为90,再转类型
df['age_num'] = df['age'].str.replace('+', '', regex=False).astype(int)

步骤2:定义分箱规则并分组求和

设定分箱区间和对应组名,用pd.cut完成分组后汇总计数:

# 定义分箱边界(左闭右开,17确保18被包含,inf覆盖80及以上所有年龄)
bins = [17, 29, 49, 64, 79, float('inf')]
# 指定目标组名
labels = [
    'young_adults_18_29',
    'younger_working_age_30_49',
    'older_working_age_50_64',
    'retirement_age_65_79',
    'older_adults_80+'
]

# 生成年龄组列
df['age_group'] = pd.cut(df['age_num'], bins=bins, labels=labels, right=False)

# 按年龄组汇总计数
result = df.groupby('age_group')['count'].sum().reset_index()
print(result)

输出结果会直接展示每个年龄组的累计总数。

SQL实现

如果数据存储在数据库中,可通过CASE WHEN语句分组求和:

基础版(年龄为数字类型)

SELECT
  CASE
    WHEN age BETWEEN 18 AND 29 THEN 'young_adults_18_29'
    WHEN age BETWEEN 30 AND 49 THEN 'younger_working_age_30_49'
    WHEN age BETWEEN 50 AND 64 THEN 'older_working_age_50_64'
    WHEN age BETWEEN 65 AND 79 THEN 'retirement_age_65_79'
    WHEN age >= 80 THEN 'older_adults_80+'
  END AS age_group,
  SUM(count) AS total_count
FROM your_table
GROUP BY age_group
ORDER BY age_group;

适配含90+的字符串年龄

若年龄列是带+的字符串,先转换为数字再分组(以MySQL为例):

SELECT
  CASE
    WHEN age_num BETWEEN 18 AND 29 THEN 'young_adults_18_29'
    WHEN age_num BETWEEN 30 AND 49 THEN 'younger_working_age_30_49'
    WHEN age_num BETWEEN 50 AND 64 THEN 'older_working_age_50_64'
    WHEN age_num BETWEEN 65 AND 79 THEN 'retirement_age_65_79'
    WHEN age_num >= 80 THEN 'older_adults_80+'
  END AS age_group,
  SUM(count) AS total_count
FROM (
  SELECT
    CAST(REPLACE(age, '+', '') AS UNSIGNED) AS age_num,
    count
  FROM your_table
) AS temp
GROUP BY age_group
ORDER BY age_group;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 19:15:11