Python 从数据框中选择行的最快方法?
我有一个熊猫数据帧df,有数百万行,列A1,…,一个 选择行的最快方法是什么,以便Python 从数据框中选择行的最快方法?,python,pandas,dataframe,Python,Pandas,Dataframe,我有一个熊猫数据帧df,有数百万行,列A1,…,一个 选择行的最快方法是什么,以便df['A1']==30 编辑:至少有三种方法: 方法1df[(df['A1']==30)] 方法2测向查询('A1==30') 方法3。Dodf=df。设置索引(A1)一次;然后df.loc[30](或者df.loc[x]对于我们试图在A1列中找到的所有x值) 利与弊是什么?5000万行52列 from string import ascii_letters df = pd.DataFrame(np.rando
df['A1']==30
编辑:至少有三种方法:
df=df。设置索引(A1)
一次;然后df.loc[30]
(或者df.loc[x]
对于我们试图在A1列中找到的所有x值)利与弊是什么?5000万行52列
from string import ascii_letters
df = pd.DataFrame(np.random.randint(50, size=(50000000, 52)), columns=list(ascii_letters))
多种方法
%timeit df[df.B == 30]
%timeit df[df.B.values == 30]
%timeit df.query('B == 30')
1 loop, best of 3: 31.4 s per loop
1 loop, best of 3: 31.6 s per loop
1 loop, best of 3: 27.1 s per loop
使用numexpr
import numexpr as ne
%%timeit
B = df.B.values
df[ne.evaluate('B == 30')]
1 loop, best of 3: 22.8 s per loop
%%timeit
B = df.B.values
mask = ne.evaluate('B == 30')
pd.DataFrame(df.values[mask], df.index[mask], df.columns)
1 loop, best of 3: 21.4 s per loop
或者除了numexpr
import numexpr as ne
%%timeit
B = df.B.values
df[ne.evaluate('B == 30')]
1 loop, best of 3: 22.8 s per loop
%%timeit
B = df.B.values
mask = ne.evaluate('B == 30')
pd.DataFrame(df.values[mask], df.index[mask], df.columns)
1 loop, best of 3: 21.4 s per loop
你看过了吗。从这里你会看到,你从
df.query('A1==30')
该链接中有更多信息,但我相信这是最容易实现的