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

Pandas中使用map函数将整数转字符串时列值显示为NaN的问题

解决Pandas中map映射后出现NaN的问题

这种情况我之前也碰到过,大概率是键和列值的类型不匹配,或者列里存在不在映射字典范围内的值,咱们一步步来排查解决:

第一步:排查核心原因

先运行下面两个命令,确认列的类型和实际值:

# 查看列的数据类型
print(df['DayOfWeek'].dtype)
# 查看列的所有唯一值
print(df['DayOfWeek'].unique())

常见的问题场景有两种:

  • 列值是字符串类型的数字:比如列里存的是'0'、'1'这种字符串,而你的字典dmap的键是整数0、1,类型不匹配就会返回NaN。
  • 列里存在0-6之外的值:比如有7或者其他不在字典键里的数值,这些值找不到对应映射就会变成NaN。

第二步:针对性解决

场景1:类型不匹配(字符串转整数)

如果列是字符串类型,先把它转成整数再映射:

# 先转换类型,再映射
df['DayOfWeek'] = df['DayOfWeek'].astype(int).map(dmap)

或者你也可以修改字典的键为字符串,和列值类型保持一致:

dmap = {'0':'Mon','1':'Tue','2':'Wed','3':'Thur','4':'Fri','5':'Sat','6':'Sun'}
df['DayOfWeek'] = df['DayOfWeek'].map(dmap)

场景2:存在超出范围的值

如果列里有不在0-6的数值,你可以用dict.get()来给这些异常值设置默认值(比如'Unknown'),避免出现NaN:

df['DayOfWeek'] = df['DayOfWeek'].map(lambda x: dmap.get(x, 'Unknown'))

额外验证

修改完之后,再运行df.head()看看结果,应该就能得到你想要的星期字符串了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 06:47:27