我最近更新了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失败。我错过了什么?
1条答案
按热度按时间a64a0gku1#
这里,
get_indexer()
方法需要一个可迭代对象,比如时间戳列表或数组,而不是单个时间戳作为参数,要使用get_indexer()方法和单个时间戳,你需要把时间戳放在一个列表或数组中,如下所示。