解决Pandas DataFrame中年龄变量转二值时的类型错误问题
解决DataFrame年龄字段二值化问题
你遇到的核心问题是年龄字段为字符串类型,无法直接和整数65做比较。解决思路分两步:先把字符串转为数值类型,再生成二值标签。
步骤1:转换年龄列的数值类型
先用pd.to_numeric()将字符串格式的年龄转为数值型,同时处理可能的非数字数据(比如空值、异常字符串):
import pandas as pd import numpy as np # 假设你的DataFrame名为df,年龄列名为'age' df['age'] = pd.to_numeric(df['age'], errors='coerce')
errors='coerce'会把无法转换为数字的内容转为NaN,之后你可以根据需求处理缺失值:# 示例:用年龄中位数填充缺失值 df['age'].fillna(df['age'].median(), inplace=True) # 或者删除含缺失值的行 # df.dropna(subset=['age'], inplace=True)
步骤2:生成二值化年龄标签
类型转换完成后,任选以下一种方式生成目标列(65岁及以上标记为1,否则为0):
方法1:np.where(最简洁)
df['age_binary'] = np.where(df['age'] >= 65, 1, 0)
方法2:布尔索引赋值
df['age_binary'] = 0 # 先默认全部设为0 df.loc[df['age'] >= 65, 'age_binary'] = 1 # 符合条件的改为1
方法3:apply(适合复杂逻辑场景)
df['age_binary'] = df['age'].apply(lambda x: 1 if x >= 65 else 0)
内容的提问来源于stack exchange,提问作者Robert
相关产品推荐
相关产品推荐

