pandas TypeError:无法比较dtypes int64和datetime64[ns]

tpxzln5u  于 2023-08-01  发布在  其他
关注(0)|答案(1)|浏览(167)

我的datime如下df

0    2019-04-09 15:40:00
1    2019-04-09 15:45:00
2    2019-04-09 15:50:00
3    2019-04-09 15:55:00
4    2019-04-09 16:00:00
5    2019-04-09 16:05:00
6    2019-04-09 16:10:00
7    2019-04-09 16:15:00
8    2019-04-09 16:20:00
9    2019-04-09 16:25:00
10   2019-04-09 16:30:00
11   2019-04-09 16:35:00
12   2019-04-09 16:40:00
13   2019-04-09 16:45:00
14   2019-04-09 16:50:00
15   2019-04-09 16:55:00
16   2019-04-09 17:00:00
17   2019-04-09 17:05:00
18   2019-04-09 17:10:00
19   2019-04-09 17:15:00

字符串
我试着找到最近的日期。

result = df.index.get_indexer([pd.to_datetime('2019-04-09 17:01:00')], method='nearest')


但它给出了以下错误。

match = X.index.get_indexer([dt], method='nearest')
  File "/home/mark/.local/lib/python3.9/site-packages/pandas/core/indexes/base.py", line 3740, in get_indexer
    return self._get_indexer_non_comparable(target, method=method, unique=True)
  File "/home/mark/.local/lib/python3.9/site-packages/pandas/core/indexes/base.py", line 5990, in _get_indexer_non_comparable
    raise TypeError(f"Cannot compare dtypes {self.dtype} and {other.dtype}")
TypeError: Cannot compare dtypes int64 and datetime64[ns]

4smxwvx5

4smxwvx51#

正如BigBen所暗示的,get_indexer将其目标参数与数据框架的 index 进行比较。因此,如果时间列已经是datetime格式,那么您就忘了先将datetime列设置为index。

df = df.set_index(['DT64'])
df.head()
Empty DataFrame
Columns: []
Index: [2019-04-09 15:40:00, 2019-04-09 15:45:00, 2019-04-09 15:50:00, 2019-04-09 15:55:00, 2019-04-09 16:00:00]

字符串

  • (是的,这是一个空的数据框架,只有索引存在)*

现在你可以得到索引器:(只是在这里复制你的台词)

ix = df.index.get_indexer([pd.to_datetime('2019-04-09 17:01:00')], method='nearest')
ix
array([16], dtype=int64)


已正确返回最近日期的索引的。

df.iloc[ix]
Empty DataFrame
Columns: []
Index: [2019-04-09 17:00:00]

相关问题