首頁 > 後端開發 > Python教學 > 如何在 groupby().sum() 操作後正確向 Pandas DataFrame 新增列?

如何在 groupby().sum() 操作後正確向 Pandas DataFrame 新增列?

Patricia Arquette
發布: 2024-12-16 20:31:10
原創
809 人瀏覽過

How to Correctly Add a New Column to a Pandas DataFrame After a groupby().sum() Operation?

從pandas groupby().sum() 的輸出建立新欄位

使用groupby() 對Pandas DataFrame 中的列執行計算時函數時,通常需要將結果合併回DataFrame 中。實現此目的的一種方法是根據分組計算建立一個新列。

在提供的範例中,目標是建立一個新列Data4,其中包含每個日期的Data3 列的總和.

所提供的程式碼嘗試將分組結果直接分配給新列,但它會產生NaN 值。要解決這個問題,應該使用transform()方法:

df['Data4'] = df['Data3'].groupby(df['Date']).transform('sum')
登入後複製

transform()方法傳回一個與DataFrame索引對齊的Series,允許它直接新增為新欄位。 'sum' 參數指定我們要執行的計算。

下面更新的程式碼示範了transform()的正確應用:

import pandas as pd

df = pd.DataFrame({
    'Date': ['2015-05-08', '2015-05-07', '2015-05-06', '2015-05-05',
             '2015-05-08', '2015-05-07', '2015-05-06', '2015-05-05'],
    'Sym': ['aapl', 'aapl', 'aapl', 'aapl', 'aaww', 'aaww', 'aaww', 'aaww'],
    'Data2': [11, 8, 10, 15, 110, 60, 100, 40],
    'Data3': [5, 8, 6, 1, 50, 100, 60, 120]
})

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

print(df)
登入後複製

修改後的程式碼的輸出正確計算了每個日期的Data3 的總和,並將結果加到DataFrame 作為新列Data4:

         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
登入後複製

以上是如何在 groupby().sum() 操作後正確向 Pandas DataFrame 新增列?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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