为什么`pd.Timedelta`在输入`numpy.str_`时失败?

nimxete2  于 2023-06-23  发布在  其他
关注(0)|答案(1)|浏览(129)

代码:

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')
eaf3rand

eaf3rand1#

出现TypeError的原因是pd.Timedela()函数需要一个字符串作为输入,而不是一个带有单个字符串元素的numpy数组。
正如你所注意到的,使用字符串是可行的:

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

退货

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

或者,你可以使用numpy字符串方法.item(),像这样:

import numpy as np
import pandas as pd

ar = np.array(['00:00:00'])
pd.Timedelta(ar.item())

这应该会给予你预期的输出:

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

相关问题