如何用分箱值替换DataFrame的Age列并生成新DataFrame?
实现连续年龄变量的分箱转换
你用pd.cut()处理连续年龄分箱的思路完全正确,这是Pandas中把连续变量转为分类变量的标准方案。下面是完整的实现代码,帮你生成目标DataFrame new_df:
原DataFrame(df):
Customer_ID Gender Age 0 0002-ORFBO Female 37 1 0003-MKNFE Male 46 2 0004-TLHLJ Male 50 3 0011-IGKFF Male 78 4 0013-EXCHZ Female 75 5 0013-MHZWF Female 23 6 0013-SMEOE Female 67 7 0014-BMAQU Male 52 8 0015-UOCOJ Female 68 9 0016-QLJIS Female 43 10 0017-DINOC Male 47 11 0017-IUDMW Female 25 12 0018-NYROU Female 58 13 0019-EFAEP Female 32 14 0019-GFNTW Female 39 15 0020-INWCK Female 58 16 0020-JDNXP Female 52 17 0021-IKXGC Female 72 18 0022-TCJCI Male 79
完整实现代码:
import pandas as pd # 定义分箱边界和对应标签 bins = [0, 3, 17, 25, 64, 99] labels = ['幼儿', '儿童', '青年', '成年', '老年'] # 复制原DataFrame,避免修改原数据 new_df = df.copy() # 将Age列替换为分箱后的分类变量 new_df['Age'] = pd.cut(df['Age'], bins=bins, labels=labels, include_lowest=True)
代码说明:
df.copy():复制原DataFrame生成new_df,防止直接修改原数据dfpd.cut()的参数:bins:指定分箱的数值边界,对应你定义的年龄区间labels:给每个分箱区间设置对应的中文分类标签include_lowest=True:确保最小值被包含在第一个区间内,让逻辑更严谨
运行后new_df的结果:
Customer_ID Gender Age 0 0002-ORFBO Female 成年 1 0003-MKNFE Male 成年 2 0004-TLHLJ Male 成年 3 0011-IGKFF Male 老年 4 0013-EXCHZ Female 老年 5 0013-MHZWF Female 青年 6 0013-SMEOE Female 老年 7 0014-BMAQU Male 成年 8 0015-UOCOJ Female 老年 9 0016-QLJIS Female 成年 10 0017-DINOC Male 成年 11 0017-IUDMW Female 青年 12 0018-NYROU Female 成年 13 0019-EFAEP Female 成年 14 0019-GFNTW Female 成年 15 0020-INWCK Female 成年 16 0020-JDNXP Female 成年 17 0021-IKXGC Female 老年 18 0022-TCJCI Male 老年
内容的提问来源于stack exchange,提问作者c200402
相关产品推荐
相关产品推荐

