python - Pandas :按两列分组,将第一列组中的第一个值相加

标签 python pandas group-by sum head

在 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

我想按 IDRef 进行分组,并取每组中 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

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

ID     Sum
 A      65
 B      55

我尝试这样做来完成第一步,但这只给我行的索引和 Dist,所以我无法继续进行第二步。

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

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

最佳答案

我相信这就是您要找的。

您需要使用first 的第一步,因为您需要groupby 中的第一个。完成后,使用 reset_index(),这样您就可以在之后使用 groupby 并使用 ID 对其求和。

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

关于python - Pandas :按两列分组,将第一列组中的第一个值相加,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51309258/

相关文章:

Python:脚本的目录

python - 从 pandas 中的列列表创建新列

python - Pandas 对每个唯一服务器的结果进行计数

python - 将 A 列列表中的最后一个值添加到 b 列列表中

python - 如何根据其他列表中的项目匹配来选择子列表中的外部项目?

python - 将不同文件中的类注册到类工厂

python - Popen 与冲突的可执行文件/路径

python - 如何有效地将函数应用于 Pandas 数据框的行?

python - 如何从两个 pandas 数据帧为每个单元格创建元组?

mysql - 在 MySql 中执行查询时与 only_full_group_by 相关的错误