最小值与Pandas系列时间戳类型错误:无法将“Timestamp”与“int”进行比较

2024-04-19 01:18:24 发布

您现在位置:Python中文网/ 问答频道 /正文

我想用np.minimumpd.Series对时间间隔重叠的计算进行矢量化:

np.minimum(
    pd.to_datetime('2018-01-16 21:43:00'),
    pd.Series([pd.to_datetime('2018-01-16 21:44:00'), pd.to_datetime('2018-01-16 21:41:00')]))

但是,这会导致以下结果TypeError

^{2}$

使用np.array就像一个符咒(不使用.values):

np.minimum(
    pd.Series([1, pd.to_datetime('2018-01-16 21:43:00')])[1], 
    np.array([pd.to_datetime('2018-01-16 21:44:00'), pd.to_datetime('2018-01-16 21:41:00')]))

有什么想法吗?在


Tags: todatetime间隔np时间array矢量化series
1条回答
网友
1楼 · 发布于 2024-04-19 01:18:24

简而言之,不要使用pd.to_datetime来创建上限,而是使用^{}

s = pd.Series([pd.to_datetime('2018-01-16 21:44:00'), pd.to_datetime('2018-01-16 21:41:00')])
print (np.minimum(s, np.datetime64('2018-01-16 21:43:00')))
0   2018-01-16 21:43:00
1   2018-01-16 21:41:00
dtype: datetime64[ns]

甚至这个np.minimum(s, pd.to_datetime('2018-01-16 21:43:00').to_datetime64())也行。在

要了解更多:如果您同时查看dtype或者甚至是创建数据的两种方式的元素表示,您可以看到它们的区别。在

^{pr2}$

一种有趣的方法是更改s.values的类型,例如:

print (np.minimum(s.values.astype('datetime64[s]'), 
                  pd.to_datetime('2018-01-16 21:43:00')))
array([Timestamp('2018-01-16 21:43:00'),
       datetime.datetime(2018, 1, 16, 21, 41)], dtype=object)

它可以工作,但是你可以看到一个是Timestamp,另一个是datetime,似乎当{}是{}时,比较是不可能的,而{}甚至是{}。在

再看看这个answer,可能会有帮助。在

相关问题 更多 >