gr = []
for i in range(12000): gr.extend([i] * 2)
np.random.seed(0)
df = pd.DataFrame({'gr': gr,
'col1': np.random.choice(200, 24000)})
anyOfThese = np.array([50, 60]) #randomly chosen
t = time()
out = df[df.groupby('gr')['col1'].transform(lambda x: np.any(np.in1d(np.array(x), anyOfThese))).astype(bool)].gr.unique()
print(round(time() - t,2))
>>> 1.87
我需要得到所有在col1
中有两个想要的值的组。你知道吗
有没有办法更快地做到这一点?我需要重复同样的过程~10万次。你知道吗
对于较大的数组,如果只有2个值,可以检查每个值是否相等,并使用
|
(or)条件:在Numpy 1.11.3/Pandas 0.19.2/Python 3.6.0上测试。性能可能因设置而异。用于测试的代码:
将^{} 与^{} 过滤一起使用:
或通过^{} 检查成员身份:
时间安排:
相关问题 更多 >
编程相关推荐