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