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

Logistic Regression项目target列字符串转整数出现NaN问题

问题原因

map方法在遇到不在映射字典key中的值时,会默认返回NaN,你遇到的问题本质是第一次映射后的target列中存在与retarget2的两个key不完全匹配的值。

排查步骤

先执行以下代码查看target列的所有唯一值,定位不匹配的内容:

print(hr['target'].unique())
解决方案
  • 情况1:字符串存在首尾空格/大小写差异
    如果输出的字符串前后有空白字符,或者大小写和定义的key不一致,先统一处理字符串再映射:
# 先去除首尾空格,如有大小写差异可追加.str.lower()统一大小写
hr['target'] = hr['target'].str.strip().map(retarget2)
  • 情况2:第一次映射存在漏转的值
    如果原始target列同时存在整数型的0/1和浮点型的0.0/1.0,第一次映射时只会转换浮点型的值,未匹配的整数会变为NaN,后续第二次映射也会保留NaN。可以在第一次映射时统一数值类型再处理:
# 第一次映射时先统一转浮点型
retarget = {0.0: 'Not looking for job change', 1.0: 'Looking for job change'}
hr['target'] = hr['target'].astype(float).map(retarget)
  • 更稳妥的转回数值方案
    无需手动定义反向映射字典,直接通过条件判断生成0/1值,避免匹配错误:
# 匹配目标字符串为1,其余为0
hr['target'] = (hr['target'] == 'Looking for job change').astype(int)

如果需要保留原始NaN不转为0,可以增加判断:

import numpy as np
hr['target'] = np.where(hr['target'].isna(), np.nan, (hr['target'] == 'Looking for job change').astype(int))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.13 01:06:03