使用datetime索引在DataFrame中选择行的最快方法?

时间:2016-02-24 14:25:55

标签: python pandas dataframe time-series

我发现在熊猫中选择行的速度相当慢。

我有一个df,其日期时间超过20k作为索引,50列。

以下是我要做的事情:

for d in reversed(df.index):
    whatever_value = calculate()
    start = time.time()
    df.ix[d] = whatever_value
    print time.time()-start

我尝试了df.ix[d],每次约需50 ~ 60 ms (printed out as above)次。所以总共需要20k * 0.055 =~ 1100 seconds

为了避免使用datetime进行选择,我还使用了顺序索引号,例如df.iloc[[100]],但性能相同

i = len(df.index)
for d in reversed(df.index):
    i -= 1
    df.iloc[[i]] = whatever_value

修改

我尝试的另一件事是

result_dict = OrderedDict()
for d in reversed(df.index):
    result_dict[d] = whatever_value
df = pd.DataFrame.from_dict(result_dict, orient='index')

我只是使用dict通过datetime接收值,最后,我将其转换为新的数据帧。

这种方式比上述所有方式都要好,但pd.DataFrame.from_dict类似于28 seconds

有没有办法更快地选择行?我不需要读取值,我只需要按顺序为每个行分配值。

或者有没有办法让dict -> dataframe更快?

0 个答案:

没有答案