首页 > 解决方案 > Pandas 和 DateTime TypeError:无法将 TimedeltaIndex 与浮点类型进行比较

问题描述

我有一个 pandas DataFrame Series 时差,如下所示:

 print(delta_t)

 1       0 days 00:00:59
 3       0 days 00:04:22
 6       0 days 00:00:56
 8       0 days 00:01:21
 19      0 days 00:01:09
 22      0 days 00:00:36
 ...

(完整的 DataFrame 有一堆我丢弃的 NaN)。

我想知道哪些 delta_t 小于 1 天、1 小时、1 分钟,所以我尝试了:

delta_t_lt1day = delta_t[np.where(delta_t < 30.)]

但后来得到了一个:

TypeError: cannot compare a TimedeltaIndex with type float

一点帮助?!?!

标签: pythonpandasdatetimeseries

解决方案


假设您的系列是timedelta格式,您可以跳过np.where, 和索引使用类似这样的东西,您可以使用适当的单位将您的实际值与其他时间增量进行比较:

delta_t_lt1day = delta_t[delta_t < pd.Timedelta(1,'D')]

delta_t_lt1hour = delta_t[delta_t < pd.Timedelta(1,'h')]

delta_t_lt1minute = delta_t[delta_t < pd.Timedelta(1,'m')]

您将获得以下系列:

>>> delta_t_lt1day
0
1    00:00:59
3    00:04:22
6    00:00:56
8    00:01:21
19   00:01:09
22   00:00:36
Name: 1, dtype: timedelta64[ns]
>>> delta_t_lt1hour
0
1    00:00:59
3    00:04:22
6    00:00:56
8    00:01:21
19   00:01:09
22   00:00:36
Name: 1, dtype: timedelta64[ns]
>>> delta_t_lt1minute
0
1    00:00:59
6    00:00:56
22   00:00:36
Name: 1, dtype: timedelta64[ns]

推荐阅读