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

为何pd.Timedelta传入numpy.str_类型输入会报错?

numpy字符串传入pd.Timedelta报错的问题

报错场景代码

import numpy as np, pandas as pd
ar = np.array(['00:00:00'])
pd.Timedelta(ar[0])

执行结果

TypeError: Expected unicode, got numpy.str_

这种情况看起来和Python的鸭子类型特性相悖,让人费解。

正常运行的对比代码

pd.Timedelta('00:00:00')

执行结果

Timedelta('0 days 00:00:00')

原因与解决办法

问题出在pandas的Timedelta构造函数的类型检查逻辑上——它直接校验输入是否为Python原生的str(unicode)类型,而非基于鸭子类型的行为判断。numpy的numpy.str_虽然功能上和字符串一致,但属于numpy自定义的类型,没被pandas的检查逻辑覆盖。

解决起来很简单,把numpy字符串转成Python原生字符串就行:

# 方法1:用str()转换
pd.Timedelta(str(ar[0]))

# 方法2:用numpy的item()提取原生类型
pd.Timedelta(ar[0].item())

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 18:42:06