首頁  >  文章  >  後端開發  >  如何計算 Pandas DataFrame 中多個欄位的分數差異?

如何計算 Pandas DataFrame 中多個欄位的分數差異?

Linda Hamilton
Linda Hamilton原創
2024-10-31 01:16:03514瀏覽

How to Calculate the Difference in Scores for Multiple Fields in a Pandas DataFrame?

Pandas groupby 在多個欄位上進行差異計算

在程式設計中,操作資料至關重要,Pandas 是執行這些任務的強大庫高效。一個常見的問題是如何按多個欄位對資料進行分組併計算差異。讓我們探索如何實現這一目標。

問題:

考慮具有以下結構的DataFrame:

         date    site country  score
0  2018-01-01  google      us    100
1  2018-01-01  google      ch     50
2  2018-01-02  google      us     70
3  2018-01-03  google      us     60
... 

目標是找到每個「地點/國家」組合的分數存在1/3/5 天的差異。

解:

為了解決這個問題,我們可以利用Pandas 的groupby和diff 函數:

df = df.sort_values(by=['site', 'country', 'date'])
排序可確保我們的資料組織正確的分組和差異計算。

  1. Groupby 和計算差異:
df['diff'] = df.groupby(['site', 'country'])['score'].diff().fillna(0)
此行使用 groupby 以「site」和「country」欄位對 DataFrame 進行分組。然後,它使用 diff 計算每組內每個連續分數之間的差異。結果儲存在名為“diff”的新欄位中。使用 fillna(0) 將任何缺失值替換為 0。

輸出:

產生的DataFrame 將包含原始欄位以及「diff」欄位:

         date    site country  score  diff
0  2018-01-01      fb      es    100   0.0
1  2018-01-02      fb      gb    100   0.0
...

附加說明:

    附加說明:
  • 如果您需要任意排序(例如,優先考慮“google”而不是“fb”),您可以在一個列表,並在排序之前將列設置為分類。
  • fillna(0) 函數將缺失值替換為 0,但您可以將其變更為任何所需的值。
可以使用此方法計算任何時間間隔(例如 1 天、3 個月等)的差異。

以上是如何計算 Pandas DataFrame 中多個欄位的分數差異?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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