首頁 > 後端開發 > Python教學 > 如何在 GroupBy DataFrames 中使用 Pandas 轉換新增列?

如何在 GroupBy DataFrames 中使用 Pandas 轉換新增列?

Mary-Kate Olsen
發布: 2024-10-19 11:52:01
原創
1098 人瀏覽過

How to Add a Column Using Pandas Transform in GroupBy DataFrames?

使用Pandas Transform 將列新增至GroupBy DataFrame

在pandas 中使用groupby 操作時,向GroupByy 新增列通常很有用結果數據框。實現此目的的一種方法是使用 .map() 函數,如範例所示。然而,另一種更直接的方法是使用 .transform() 函數。

.transform() 允許我們將函數應用於資料幀中的每個群組並傳回帶有結果的 Series。傳回的 Series 將具有與原始資料幀對齊的索引。

為了說明這一點,讓我們從提供的資料幀開始:

df = pd.DataFrame({'c': [1, 1, 1, 2, 2, 2, 2], 'type': ['m', 'n', 'o', 'm', 'm', 'n', 'n']})
登入後複製

我們的目標是計算每個 c 的 type 值並新增一個大小為 c 的欄位。

g = df.groupby('c')['type'].value_counts().reset_index(name='t')
登入後複製

此程式碼計算每個群組的值並建立一個名為 t 的新欄位。

使用.transform( 新增大小列),我們可以執行以下操作:

g['size'] = df.groupby('c')['type'].transform('size')
登入後複製

.transform('size') 將size 函數應用於每個群組,該函數傳回每個組的大小。生成的 Series 與原始資料幀的索引對齊,允許我們將其作為新列添加到 g。

輸出將是一個帶有名為size 的附加列的資料幀:

   c type  t  size
0  1    m  1     3
1  1    n  1     3
2  1    o  1     3
3  2    m  2     4
4  2    n  2     4
登入後複製

使用.transform() 提供了一種更簡潔、更直接的方法,可以將列從groupby 聚合添加回原始資料幀。

以上是如何在 GroupBy DataFrames 中使用 Pandas 轉換新增列?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板