繁体   English   中英

如何快速检查pandas DataFrame索引中是否存在值?

[英]How to quickly check if a value exists in pandas DataFrame index?

更新dataframe ,应检查该值是否存在于dataframe索引中,但是我想知道哪种方法更快 ,谢谢!

1. if value in set(dataframe.index) 2. if value in dataframe.index

您需要第二个解决方案:

value in dataframe.index

样品:

df = pd.DataFrame({'A':range(100000)})
df.index = df.index.astype(np.int64)
print (df.index)


In [64]: %timeit (5000 in df.index)
The slowest run took 37.76 times longer than the fastest. This could mean that an intermediate result is being cached.
1000000 loops, best of 3: 523 ns per loop

In [65]: %timeit (5000 in df.index.values)
The slowest run took 5.24 times longer than the fastest. This could mean that an intermediate result is being cached.
10000 loops, best of 3: 76.7 µs per loop

In [66]: %timeit (5000 in set(df.index))
100 loops, best of 3: 7.34 ms per loop

Timimgs获取更多数据:

df = pd.DataFrame({'A':range(100000)})
df.index = df.index.astype(np.int64)

np.random.seed(2017)
a = np.random.randint(100000, size=1000)

In [73]: %timeit ([i in df.index for i in a])
The slowest run took 4.36 times longer than the fastest. This could mean that an intermediate result is being cached.
1000 loops, best of 3: 636 µs per loop

In [74]: %timeit ([i in df.index.values for i in a])
1 loop, best of 3: 208 ms per loop

In [75]: %timeit ([i in set(df.index) for i in a])
1 loop, best of 3: 7.44 s per loop

可能是另一种方式。

a = time.time()
如果值在set(dataframe.index)中
b = time.time()
timetaken = ba

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM