In [254]: %timeit df[df['index'] == 999]
1000 loops, best of 3: 368 µs per loop
In [255]: %timeit df_with_index.loc[999]
10000 loops, best of 3: 57.7 µs per loop
但是请注意,建立索引需要时间:
In [220]: %timeit df.set_index(['index'])
1000 loops, best of 3: 330 µs per loop
与dict一样,数据帧的索引由哈希表支持。查找行 基于索引值类似于基于键查找dict值
相反,列中的值类似于列表中的值
基于索引值查找行比基于列值查找行快
例如,考虑
下面是如何查找
df['index']
列等于999的任何行。 Pandas必须循环遍历列中的每个值,以找到等于999的值下面是如何查找索引等于999的任何行。对于索引,Pandas使用哈希值查找行:
按索引查找行比按列值查找行快得多:
但是请注意,建立索引需要时间:
因此,只有当您有许多这种类型的查找时,索引才是有利的 表演
有时索引在重塑数据帧方面起着作用。许多函数,例如
set_index
、stack
、unstack
、pivot
、pivot_table
、melt
,lreshape
和crosstab
都使用或操作索引。 有时,出于表示的目的,或者为了join
、merge
或groupby
操作,我们希望数据帧具有不同的形状。(正如您所注意到的,也可以基于列值进行连接,但是基于索引的连接速度更快。)在幕后,join
、merge
和groupby
尽可能利用快速索引查找时间序列有
resample
、asfreq
和interpolate
方法,它们的底层实现也利用了快速索引查找所以最后,我认为索引的有用性的起源,为什么它会出现在这么多函数中,是因为它能够执行快速散列 查找
相关问题 更多 >
编程相关推荐