首页 > 解决方案 > 使用 numpy 查询数据

问题描述

我已经使用pandasandsqlite来执行多个条件搜索dataframe,例如:

name    age height
0   john    18  178
1   jen     25  168

age > 20 & height < 170 & height > 150

我想知道是否numpy可以做同样的事情,如果可以,它会比pandasand更快sqlite吗?

谢谢

标签: pandasnumpysqlite

解决方案


是的,numpy可以做同样的事情,而且比pandas

df = pd.DataFrame({'name': {0: 'john', 1: 'jen'},
                   'age': {0: 18, 1: 25},
                   'height': {0: 178, 1: 168}})
print((df['age'] > 20) & (df['height'] < 170) & (df['height'] > 150))
0    False
1     True
dtype: bool


m = df.values.T  # Note the transposition
print((m[1] > 20) & (m[2] < 170) & (m[2] > 150))
array([False,  True])

表现

>>> %timeit (df['age'] > 20) & (df['height'] < 170) & (df['height'] > 150)
392 µs ± 1.87 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)

>>> %timeit (m[1] > 20) & (m[2] < 170) & (m[2] > 150)
6.69 µs ± 12.1 ns per loop (mean ± std. dev. of 7 runs, 100000 loops each)

推荐阅读