python - 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
我想按ID
and分组,并在每组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)
如果有人为此帮助我,那就太好了。谢谢!
解决方案
我相信这就是你要找的。
您需要使用的第一步,first
因为您想要groupby
. 完成此操作后,reset_index()
请使用,以便groupby
之后使用 a 并使用ID
.
df.groupby(['ID','Ref'])['Dist'].first()\
.reset_index().groupby(['ID'])['Dist'].sum()
ID
A 65
B 55
推荐阅读
- ruby-on-rails - 如何在 Rails 6 中捕获 Rack RangeError
- java - 无法将 com.ru.enigma.Models.Post 转换为 com.google.android.gms.ads.nativead.NativeAd
- go - 如何处理共享同一通道的多个 goroutine
- google-app-engine-python - 如何在 App Engine 上的现有应用程序中创建服务,而不影响现有正在运行的服务
- c# - 用方法的输出替换文本框中的任何索引
- github - Github - 防止用户在没有管理员权限的情况下打开新的存储库
- r - If...else error 'the condition has lenght >1...' 在每个语句中都有多个操作
- robotframework - 对机器人框架的鼻子测试
- yaml - 从 Azure 管道在本地计算机上创建 clickonce 包?
- java - Oracle JDBC Thin 驱动程序:编码问题