首頁 >後端開發 >Python教學 >如何使用「transform()」在 Pandas 中新增帶有分組求和的新欄位?

如何使用「transform()」在 Pandas 中新增帶有分組求和的新欄位?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-12-24 10:46:14865瀏覽

How to Add a New Column with Grouped Summation in Pandas Using `transform()`?

根據Pandas 中的分組求和建立新欄位

問題陳述

嘗試根據值的求和建立新欄位時使用pandas 的groupby () 按日期分組,並遇到NaN 結果。目標是新增一列,顯示所有日期的特定值的總和,無論與該日期關聯的行數為何。

要實現此目的,轉換使用()函數。與逐行操作的 apply() 函數不同,transform() 對分組資料執行計算並傳回與原始資料幀對齊的序列。

df['Data4'] = df['Data3'].groupby(df['Date']).transform('sum')

這裡是逐步細分:

  • df['Data3'].groupby(df['Date']): 此行將'Data3' 列分組'Date '.
  • transform('sum'):將'transform' 函數應用於分組對象,計算每個日期組的'Data3'的總和。
  • 結果為與原始資料框對齊的系列,允許將其新增為名為「Data4」的新欄位。

範例用法

考慮以下資料框:

         Date   Sym  Data2  Data3
0  2015-05-08  aapl     11      5
1  2015-05-07  aapl      8      8
2  2015-05-06  aapl     10      6
3  2015-05-05  aapl     15      1
4  2015-05-08  aaww    110     50
5  2015-05-07  aaww     60    100
6  2015-05-06  aaww    100     60
7  2015-05-05  aaww     40    120

應用transform()函數:

df['Data4'] = df['Data3'].groupby(df['Date']).transform('sum')

結果:

         Date   Sym  Data2  Data3  Data4
0  2015-05-08  aapl     11      5     55
1  2015-05-07  aapl      8      8    108
2  2015-05-06  aapl     10      6     66
3  2015-05-05  aapl     15      1    121
4  2015-05-08  aaww    110     50     55
5  2015-05-07  aaww     60    100    108
6  2015-05-06  aaww    100     60     66
7  2015-05-05  aaww     40    120    121

作為從輸出中可以明顯看出,「Data4」列現在保存每個唯一的「Data3」的總和「日期」值。

以上是如何使用「transform()」在 Pandas 中新增帶有分組求和的新欄位?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn