我有一个非常庞大的pandas数据框/系列,它包含数百万个元素。 我需要查找所有时间戳早于t0的元素。 所以通常我会这样做:
selected_df = df[df.index < t0]
这需要很长时间。据我所知,当pandas进行搜索时,它会遍历数据框中的每个元素。然而,我知道我的数据框已经排序,因此只要时间戳> t0,我就可以中断循环。我假设pandas不知道数据框已经排序,并且会搜索所有时间戳。
我尝试使用pandas.Series,但仍然非常缓慢。 我尝试编写自己的循环,例如:
boudery = 0
ticks_time_list = df.index
tsearch = ticks_time_list[0]
while tsearch < t0:
tsearch = ticks_time_list[boudery]
boudery += 1
selected_df = df[:boudery]
这比使用pandas搜索还要耗时更长。 目前我唯一能想到的解决方案是使用Cython。 有什么想法可以在不涉及C的情况下解决这个问题吗?