2024-05-19 07:22:00 发布
网友
我使用多个条件(与变量比较)选择/过滤数据帧,如下所示:
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,熊猫可以这样做:
numexpr
>>> import pandas as pd >>> pd.get_option('compute.use_numexpr') # use `pd.set_option()` if False True
在我个人看来,你目前的做法是相当公平的。你知道吗
如果真的需要优化,一种方法是使用底层NumPy数组来生成布尔掩码。一般来说,Pandas在重载操作符和NumPy时可能会带来一些额外的开销。(折衷的办法可以说是更大的灵活性和对NaN数据本质上的平滑处理。)
第二,检查您是否已经利用了
numexpr
,熊猫可以这样做:相关问题 更多 >
编程相关推荐