在 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中文網其他相關文章!