Python 基于Pandas中多个列的ID求和
我有以下问题: 共有四个团队,每个团队都分配了一个ID号(1到4)。他们只玩一次就可以得分。奥运会的结果在熊猫数据框中,如下所示:Python 基于Pandas中多个列的ID求和,python,python-3.x,pandas,Python,Python 3.x,Pandas,我有以下问题: 共有四个团队,每个团队都分配了一个ID号(1到4)。他们只玩一次就可以得分。奥运会的结果在熊猫数据框中,如下所示: +----------------+----------------+-------------+-------------+ | Home Player ID | Away Player ID | Home Points | Away Points | +----------------+----------------+-------------+-------
+----------------+----------------+-------------+-------------+
| 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将他们的积分相加,无论他们是在主场还是客场
我以一种非常零散的方式实现了这一点,首先为主场创建了两个新的数据帧,然后为客场创建了两个新的数据帧,重命名列名,使其统一,然后使用pd.concat
将它们组合成两个列:球员ID和球员积分
然而,这似乎是一种非常低效的方法,我希望找到一种更有效的方法
最终结果如下所示:
| Player ID | Total Points |
+-----------+--------------+
| 1 | 4 |
| 2 | 4 |
| 3 | 2 |
| 4 | 5 |
+-----------+--------------+
我真的很感激任何帮助/建议,如果有什么解释不好的,请让我知道 Firat按第一个空格by从列创建
多索引
,然后按重塑,最后聚合总和
:
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