调用pd.to_datetime时报TypeError: unhashable type: 'numpy.ndarray'如何解决
报错根因
pd.to_datetime()仅支持一维序列类输入(pandas Series、一维numpy数组、列表等),你执行.values.reshape(-1,1)后得到的是shape为(n,1)的二维numpy数组,不符合入参要求,才触发TypeError: unhashable type: 'numpy.ndarray'报错,和是否为pandas类型无直接关联。
解决方法
根据你后续的使用场景选择对应方案即可:
- 场景1:不需要保留二维结构,直接转换为datetime类型
无需将pandas Series转为numpy数组,直接调用pd.to_datetime()即可,注意你的日期格式为日/月/年,需添加dayfirst=True参数保证解析正确:x = s.iloc[:, 0] # 加dayfirst=True适配21/10/2020格式的日期 X = pd.to_datetime(x, dayfirst=True) - 场景2:后续需要使用二维结构的日期数据
先完成datetime类型转换,再执行reshape操作得到二维数组:x = s.iloc[:, 0] X = pd.to_datetime(x, dayfirst=True).values.reshape(-1, 1)
其他注意事项
你原代码中导入mdates的语句存在语法错误,需修正为:
from matplotlib.dates import mdates
内容的提问来源于stack exchange,提问作者d12
相关产品推荐
相关产品推荐

