Pandas:使用多个标准从数据帧中选择行的有效方法

2024-05-19 07:22:00 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用多个条件(与变量比较)选择/过滤数据帧,如下所示:

results = df1[
    (df1.Year == Year) &
    (df1.headline == text) &
    (df1.price > price1) &
    (df1.price < price2) &
    (df1.promo > promo1) &
    (df1.promo < promo2)
]

虽然这种方法可行,但速度非常慢。因此,我想知道,有没有更有效的方法可以使用pandas根据多个条件过滤/选择行?你知道吗


Tags: 数据方法text条件yearpriceresults速度
1条回答
网友
1楼 · 发布于 2024-05-19 07:22:00

在我个人看来,你目前的做法是相当公平的。你知道吗

如果真的需要优化,一种方法是使用底层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,熊猫可以这样做:

>>> import pandas as pd
>>> pd.get_option('compute.use_numexpr')  # use `pd.set_option()` if False
True

相关问题 更多 >

    热门问题