首页 > 解决方案 > Pandas:按两列分组,将第一列组中的第一个值相加

问题描述

在 Python 中,我有一个 pandas 数据框df

ID    Ref    Dist
 A      0      10
 A      0      10
 A      1      20
 A      1      20
 A      2      30     
 A      2      30
 A      3       5
 A      3       5
 B      0       8
 B      0       8
 B      1      40
 B      1      40
 B      2       7
 B      2       7

我想按IDand分组,并在每组Ref中取列的第一行。Dist

ID    Ref    Dist
 A      0      10
 A      1      20
 A      2      30     
 A      3       5
 B      0       8
 B      1      40
 B      2       7

我想总结每个组Dist中的列。ID

ID     Sum
 A      65
 B      55

我尝试这样做是为了做第一步,但这只是给了我行的索引 and Dist,所以我无法继续进行第二步。

df.groupby(['ID', 'Ref'])['Dist'].head(1)

如果有人为此帮助我,那就太好了。谢谢!

标签: pythonpandasgroup-bysumhead

解决方案


我相信这就是你要找的。

您需要使用的第一步,first因为您想要groupby. 完成此操作后,reset_index()请使用,以便groupby之后使用 a 并使用ID.

df.groupby(['ID','Ref'])['Dist'].first()\
          .reset_index().groupby(['ID'])['Dist'].sum()
ID
A    65
B    55

推荐阅读