[英]Randomly select rows from Pandas DataFrame based on multiple criteria
[英]Pandas: Efficient way to select rows from a dataframe using multiple criteria
我正在使用多个条件(与变量进行比较)选择/过滤DataFrame,如下所示:
results = df1[
(df1.Year == Year) &
(df1.headline == text) &
(df1.price > price1) &
(df1.price < price2) &
(df1.promo > promo1) &
(df1.promo < promo2)
]
尽管此方法有效,但速度非常慢。 因此,我想知道,有没有更有效的方法使用熊猫基于多个条件来筛选/选择行?
在我个人看来,您当前的方法在书上与Pandas语法一样公平。
一种优化的方法(如果确实需要这样做)是使用基础的NumPy数组来生成布尔掩码。 一般而言,Pandas在使操作员和NumPy过载方面会带来一些额外的开销。 (折衷可以说是更大的灵活性和对NaN数据的内在平滑处理。)
price = df1.price.values
promo = df1.promo.values
# Note: this is a view to a slice of df1
results = df1.loc[
(df1.Year.values == Year) &
(df1.headline.values == text) &
(price > price1) &
(price < price2) &
(promo > promo1) &
(promo < promo2)
]
其次,检查您是否已经在使用numexpr
,启用了Pandas可以做到:
>>> import pandas as pd
>>> pd.get_option('compute.use_numexpr') # use `pd.set_option()` if False
True
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.