首页 > 解决方案 > 如何在同一列值内分组然后求和?

问题描述

我想像 SQL 一样使用 Pandas (Python3)。我有一张下表。

df1
name, score
Tom, 95
Jane, 88
Tom, 30
Lisa, 50
Kyle, 78
Jane, 70

如果名称列具有相同的名称,我期望的是按名称和总分值分组,然后按分数排序。因此,

df1
name, score
Jane, 158
Tom, 125
Kyle, 78
Lisa, 50

汇总 Tom 和 Jane 并将每个值的分数相加。就像下面的 SQL。

SELECT name, SUM (score) OVER (PARTITION BY name) as _score
FROM ....
WHERE ....
GROUP BY name
ORDER BY _score DESC

我尝试了以下但没有奏效。

df1.sort_values(by=['name'],ascending=False).sum()

我怎样才能在熊猫中做到这一点?

标签: python-3.xpandas

解决方案


df_1 = {'name': ['tom', 'jane', 'tom', 'lisa', 'kyle', 'jane'],
        'score': [95, 88, 30, 50, 78, 70]}
df_1 = pd.DataFrame(df_1)

print(df_1.groupby(['name']).sum().sort_values('score', ascending=False))

推荐阅读