簡體   English   中英

基於 Pandas 中跨多個列的 ID 求和

[英]Summing based on IDs across multiple columns in Pandas

我有以下問題:

有四個團隊,每個團隊都分配了一個 ID 號(1 到 4)。 他們只玩一次並獲得積分。 游戲的結果在 Pandas DataFrame 中,如下所示:

+----------------+----------------+-------------+-------------+
| Home Player ID | Away Player ID | Home Points | Away Points |
+----------------+----------------+-------------+-------------+
|              1 |              2 |           3 |           0 |
|              3 |              4 |           1 |           1 |
|              2 |              3 |           3 |           0 |
|              4 |              1 |           3 |           0 |
|              2 |              4 |           1 |           1 |
|              3 |              1 |           1 |           1 |
+----------------+----------------+-------------+-------------+

目的是根據每個球員的 ID 計算他們的積分,無論他們是主場還是客場。

我通過首先為 Home 創建兩個新的 DataFrames,然后為 Away,重命名列名使它們統一,然后使用pd.concat將它們組合成兩列:Player ID 和玩家積分。

然而,這似乎是一種非常低效的方法,我希望找到一種更有效的方法!

最終結果如下所示:

| Player ID | Total Points |
+-----------+--------------+
|         1 |            4 |
|         2 |            4 |
|         3 |            2 |
|         4 |            5 |
+-----------+--------------+

我真的很感激任何幫助/建議,如果有什么解釋不好,請告訴我!

MultiIndex通過split的第一個空格從列創建MultiIndex ,然后通過stack和最后的聚合sum重塑:

df.columns = df.columns.str.split(n=1, expand=True)
df = df.stack(0).groupby('Player ID', as_index=False)['Points'].sum()
print (df)
   Player ID  Points
0          1       4
1          2       4
2          3       2
3          4       5

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM