微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何通过大熊猫数据帧的列值加速行选择

我有一个大的数字Pandas数据帧df,我想选择某些列的值在min_value和max_value范围内的行.

我可以这样做:

filtered_df = df[(df[col_name].values >= min_value) & (df[col_name].values <= max_value)]

我正在寻找加速它的方法.我尝试下面:

df.sort(col_name, inplace=True)
left_idx = np.searchsorted(df[col_name].values, min_value, side='left')
right_idx = np.searchsorted(df[col_name].values, max_value, side='right')
filtered_df = df[left_idx:right_idx]

但它不适用于df.sort()需要更多时间.

那么,加速选择的任何提示

(熊猫0.11)

解决方法:

我认为你最好的选择是使用numexpr加快速

import pandas as pd
import numpy as np
import numexpr as ne

data = np.random.normal(size=100000000)
df = pd.DataFrame(data=data, columns=['col'])
a = df['col']
min_val = a.min()
max_val = a.max()
expr = '(a >= min_val) & (a <= max_val)'

和时间……

%timeit eval(expr)
1 loops, best of 3: 668 ms per loop

%timeit ne.evaluate(expr)
1 loops, best of 3: 197 ms per loop

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐