在 SQL 中,GROUP BY 操作根据指定列的值将数据划分为子集。HAVING 子句对这些子集应用过滤器约束。此功能允许选择性数据聚合和过滤。
在 Pandas 中,GROUP BY 功能可通过 groupby()
方法实现,该方法返回一个 GroupBy 对象。Pandas 中等效于 SQL HAVING 子句的是 filter()
方法,它对 groupby()
创建的子集应用过滤器。
<code>df.groupby(by_column).filter(filter_function)</code>
其中:
df
是 Pandas DataFrame。by_column
是用于分组的列。filter_function
是一个为每个组返回布尔值的函数。要在 Pandas 中对分组数据集应用过滤器,请执行以下步骤:
groupby()
创建 GroupBy 对象。filter()
方法将 filter_function
应用于每个组。filter_function
应为每个组返回一个布尔值。假设我们有以下 Pandas DataFrame:
<code>df = pd.DataFrame([[1, 2], [1, 3], [5, 6]], columns=['A', 'B'])</code>
要查找 B 列总和大于 4 的组,我们可以使用以下代码:
<code>result = df.groupby('A').filter(lambda x: x['B'].sum() > 4)</code>
结果将是一个新的 DataFrame,其中包含满足过滤器条件的组中的行:
<code>print(result)</code>
输出:
<code> A B 0 1 2 1 1 3</code>
filter_function
可以是任何有效的 Python 函数,它接受 Pandas 组作为输入并返回布尔值。filter_function
无法访问用于分组的列。如果您需要访问这些列,可以在应用过滤器之前手动按列分组。以上是如何在 Pandas 中实现 SQL 的 GROUP BY HAVING 子句?的详细内容。更多信息请关注PHP中文网其他相关文章!