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

Pandas映射列值时返回全NaN问题及正确映射需求

问题解决步骤

问题根源

  1. 缺失值键不匹配:映射字典里用的是"NaN",但数据里的缺失值是大写的"NAN",大小写不一致导致无法匹配。
  2. 字符串含多余空格:原始数据中人格类型字符串(比如"INTP ")带有尾部空格,和字典里无空格的键无法匹配。
  3. Series操作错误:q20 = castaway_details["personality_type"]得到的是一个Series,你却用q20["personality_type"]赋值,属于错误操作,应直接对Series本身进行映射。

修正后的代码

# 修正映射字典的缺失值键,改为大写"NAN"
mapping = {
    "ISTJ":1, "ISTP":2, "ISFJ":3, "ISFP":4, 
    "INFP":6, "INTJ":7, "INTP":8, "ESTP":9, 
    "ESTJ":10, "ESFP":11, "ESFJ":12, "ENFP":13, 
    "ENFJ":14, "ENTP":15, "ENTJ":16, "NAN": 17
}

# 先去除字符串前后空格,再执行映射,直接修改原DataFrame
castaway_details["personality_type"] = castaway_details["personality_type"].str.strip().map(mapping)

# 若需保留原数据,可创建新列存储结果:
# castaway_details["personality_score"] = castaway_details["personality_type"].str.strip().map(mapping)

验证结果

执行后DataFrame会符合你的期望输出:

personality_type
8
6
7
1
17
11

如果数据中存在真正的NaN(不是字符串格式的"NAN"),可额外用fillna补充处理:

castaway_details["personality_type"] = castaway_details["personality_type"].str.strip().map(mapping).fillna(17)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 06:30:52