python Pandas 1.5.3 Index.get_indexer的工作方式与index.get_loc不同

5t7ly7z5  于 2023-03-07  发布在  Python
关注(0)|答案(1)|浏览(220)

我最近更新了Pandas到最新版本,1.5.3。我以前用的是1.4之前的版本。随着最新的更新,我在index.get_loc上收到了一堆折旧通知,我将使用index.get_indexer。我更新了代码get_indexer,但现在我收到了一堆错误。
我的代码使用时间戳作为索引,使用get_loc,我可以通过传入一个日期时间来找到索引号,现在我得到了一个错误:“datetime.datetime”对象不可迭代。
我有一些简单的示例代码如下:

from datetime import datetime, timedelta

import pandas as pd
import numpy as np

expiration_date = datetime(2016,3,24,16,00,0)
num_minutes = 50000

date_list = [expiration_date - timedelta(minutes=x) for x in range(num_minutes)]

df = pd.DataFrame(index = date_list)

searchDate = date_list[10]

idx_get_loc = df.index.get_loc(searchDate, method='nearest')
print(f'Closes index using get_loc: {idx_get_loc}')

idx_get_indexer = df.index.get_indexer(searchDate, method='nearest')  
print(f'Closes index using get_indexer: {idx_get_indexer}')

get_loc将报告正确的索引位置。get_indexer失败。我错过了什么?

a64a0gku

a64a0gku1#

这里,get_indexer()方法需要一个可迭代对象,比如时间戳列表或数组,而不是单个时间戳作为参数,要使用get_indexer()方法和单个时间戳,你需要把时间戳放在一个列表或数组中,如下所示。

idx_get_indexer = df.index.get_indexer([searchDate], method='nearest')

相关问题