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

解决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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 03:22:35