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

Python中如何将数据集年龄列的数值转换为对应文本标签?

问题原因
  • 第二种方法核心错误:Pandas的Series布尔判断不能使用Python原生逻辑运算符and/or,必须使用位运算符&/|,且每个判断条件必须用小括号单独包裹,避免运算符优先级冲突
  • 两种方法共有的隐含错误:直接修改原age列的数值为字符串,会导致后续针对age的数值比较逻辑失效(字符串无法和整数做大小比较),越靠后的判断条件越容易触发报错
  • 第一种方法缺少18-24岁的分段规则,该区间的年龄无法被匹配到对应标签
正确实现方案

方案1:修正原生loc写法(适配原有逻辑)

优先新建标签列,不修改原始年龄数值,避免影响后续其他数据计算:

# 先初始化空的标签列
df['age_label'] = ''
df.loc[(df['age'] >= 18) & (df['age'] <= 24), 'age_label'] = 'young adults'
df.loc[(df['age'] >= 25) & (df['age'] <= 34), 'age_label'] = 'middle aged adults'
df.loc[(df['age'] >= 35) & (df['age'] <= 49), 'age_label'] = 'older adults'
df.loc[df['age'] >= 50, 'age_label'] = 'elderly'

方案2:使用pd.cut方法(更简洁高效)

针对分箱打标签的场景,Pandas内置的cut方法不用写多行判断逻辑,性能更高,代码更易维护:

import pandas as pd

# 定义分箱边界和对应标签,边界值设置为17是为了兼容18岁的取值
bins = [17, 24, 34, 49, float('inf')]
labels = ['young adults', 'middle aged adults', 'older adults', 'elderly']
# right=True表示分箱区间为左开右闭,(17,24]即对应18到24岁
df['age_label'] = pd.cut(df['age'], bins=bins, labels=labels, right=True)

如果需要覆盖18岁以下的年龄区间,直接调整bins和labels参数即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 22:15:03