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

使用Pandas替换DataFrame中Period列值时遇类型错误的问询

解决TypeError: Cannot compare types 'ndarray(dtype=int64)' and 'str'问题

这个错误的根源很清晰:你的Period列存储的是整数类型(int64),但你用来替换的字典repl_dict里的键全是字符串(比如'01'),整数和字符串没法直接对比匹配,所以触发了类型错误。

给你几个可行的解决思路:

1. 把替换字典的键改成整数

既然Period是整数,直接让字典的键和列类型匹配:

repl_dict = {1: 'M1', 2: 'M2', 3: 'M3', 4: 'M4', 5: 'M5', 6: 'M6',
             7: 'M7', 8: 'M8', 9:'M9', 10:'M10', 11:'M11', 12:'M12'}
# 注意要赋值回原列,否则replace只会返回新对象不会修改原DataFrame
results['Period'] = results['Period'].replace(repl_dict)

2. 先把Period列转为字符串再替换

如果想保留原字典的字符串键,可以先把整数列转成带前导零的字符串(比如1→'01'),再用原字典替换:

# astype(str)转成字符串,str.zfill(2)补前导零确保是两位格式
results['Period'] = results['Period'].astype(str).str.zfill(2).replace(repl_dict)

3. 更简洁的直接拼接方式

其实如果你的需求只是把1变成'M1'、12变成'M12',完全不用写字典,直接字符串拼接更高效:

results['Period'] = 'M' + results['Period'].astype(str)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 09:26:21