Pandas 提供了多种过滤数据的方法,包括 reindex()、apply() 和 map() 。然而,当应用多个过滤器时,效率就成为一个问题。
为了优化过滤,请考虑使用布尔索引。 Pandas 和 Numpy 都支持布尔索引,它直接对底层数据数组进行操作,而不会创建不必要的副本。
以下是布尔索引的示例:
<code class="python">df.loc[df['col1'] >= 1, 'col1']</code>
此表达式返回包含以下内容的 Pandas Series:仅列“col1”中的值大于或等于 1 的行。
要应用多个过滤器,请使用逻辑运算符“&”(AND)和“|” (或者)。例如:
<code class="python">df[(df['col1'] >= 1) & (df['col1'] <=1 )]</code>
此表达式返回一个 DataFrame,仅包含列“col1”中的值在 1 和 1 之间(含 1 和 1)的行。
对于辅助函数,请考虑定义以下函数:获取一个 DataFrame 并返回一个布尔系列,允许您使用逻辑运算符组合多个过滤器。
<code class="python">def b(x, col, op, n): return op(x[col],n) def f(x, *b): return x[(np.logical_and(*b))]</code>
Pandas 0.13 引入了 query() 方法,该方法提供了一种更有效的方式来表达复杂的过滤条件。假设有效的列标识符,以下代码根据多个条件过滤 DataFrame df:
<code class="python">df.query('col1 <= 1 & 1 <= col1')</code>
总之,布尔索引提供了一种有效的方法,可以将多个过滤器应用于 Pandas DataFrame 或 Series,而无需创建不必要的副本。使用逻辑运算符和辅助函数组合多个过滤器以实现扩展功能。
以上是如何高效过滤具有多个条件的 Pandas DataFrame 或 Series?的详细内容。更多信息请关注PHP中文网其他相关文章!