Pandas Groupby 多個欄位以實現基於時間的差異
在資料分析領域,比較隨時間的變化是一項至關重要的任務。 Pandas 是一個多功能的 Python 函式庫,提供了處理此類操作的強大功能。當處理按多個分類欄位和時間組織的資料時,groupby.diff() 方法被證明是無價的。
考慮像提供的那樣的 DataFrame,其中每個站點在不同國家/地區和日期都有不同的分數。目標是計算每個站點/國家/地區組合的 1/3/5 天分數差異。
問題解決
為了實現這一目標,我們利用以下步驟:
<code class="python">df = df.sort_values(by=['site', 'country', 'date']) df['diff'] = df.groupby(['site', 'country'])['score'].diff().fillna(0)</code>在每組中應用 diff() 來計算分數連續行的差異。
輸出:
date | site | country | score | diff |
---|---|---|---|---|
2018-01-01 | fb | es | 100 | 0.0 |
2018-01-02 | fb | gb | 100 | 0.0 |
2018-01-01 | fb | us | 50 | 0.0 |
2018-01-02 | fb | us | 55 | 5.0 |
2018-01-03 | fb | us | 100 | 45.0 |
2018-01-01 | ch | 50 | 0.0 | |
2018-01-02 | ch | 10 | -40.0 | |
2018-01-01 | us | 100 | 0.0 | |
2018-01-02 | us | 70 | -30.0 | |
2018-01-03 | us | 60 | -10.0 |
結果是一個顯示計算分數差異的DataFrame:
高階排序
如果需要任意順序,例如優先考慮“google”而不是“fb”,可以建立一個分類列並將其指定為排序參數。這可確保維持指定的順序。以上是如何使用 Groupby 和 diff() 計算 Pandas DataFrames 中基於時間的差異?的詳細內容。更多資訊請關注PHP中文網其他相關文章!