TypeError:searchsorted需要兼容的dtype或标量,而不是ndarray(Pandas)

问题描述 投票:0回答:1

我无法在日期时间索引上应用搜索排序,但没有收到错误:

df.index.searchsorted(pd.Series(np.array([df.index[0], df.index.max()])))

>>>TypeError: searchsorted requires compatible dtype or scalar, not ndarray

样本数据:

x = ['1998-01-07 13:17:00', '1998-01-07 13:18:00', '1998-01-07 13:19:00', '1998-01-07 13:20:00',
     '1998-01-07 13:21:00', '1998-01-07 13:22:00', '1998-01-07 13:23:00', '1998-01-07 13:24:00',
     '1998-01-07 13:25:00', '1998-01-07 13:26:00']
df = pd.DataFrame(x)
df.set_index(df.iloc[:, 0], inplace=True)
df.index = pd.DatetimeIndex(df.index.values)


df.index.searchsorted(pd.Series(np.array([df.index[0], df.index.max()])))

为什么不起作用? (听说这是一个已修复的错误,但是仍然存在)

如何使它起作用?

我需要在多处理功能中应用此行,它必须高效。

python pandas dataframe search typeerror
1个回答
0
投票

如错误所述,您正在将ndarray传递到与pandas.Series.searchsorted()系列(其数据类型为df.index)不兼容的pandas.DatetimeIndex。因此,要解决此问题,您需要像这样调整给定Series的类型:

# just change this line
print(df.index.searchsorted(pd.DatetimeIndex([df.index[0], df.index.max()])))
# prints: [0, 9]

© www.soinside.com 2019 - 2024. All rights reserved.