gpt4 book ai didi

python - Pandas 与另一列的最大值聚合分组?

转载 作者:行者123 更新时间:2023-12-01 13:10:03 26 4
gpt4 key购买 nike

目前,我正在使用 COVID 数据集来获得一些见解。

数据集是这样的形式:

    Country Province    Lat Lon         Date                    Cases   Status
0 Thailand 15.0000 101.0000 2020-01-22 00:00:00+00:00 2 confirmed
1 Thailand 15.0000 101.0000 2020-01-23 00:00:00+00:00 3 confirmed
2 Thailand 15.0000 101.0000 2020-01-24 00:00:00+00:00 5 confirmed
3 Thailand 15.0000 101.0000 2020-01-25 00:00:00+00:00 7 confirmed
4 Thailand 15.0000 101.0000 2020-01-26 00:00:00+00:00 8 confirmed

我想按国家/地区分组,对“案例”列求和(我们称此案例求和列),但我遇到了纬度和经度问题:我想取最大值的纬度/经度案例专栏。换句话说,我想要案例数最多的行中的纬度和经度。澄清一下,用例是像法国这样的国家/地区有多个纬度和经度的行(例如法属波利尼西亚),但我只想从案例最多的地区获取分组中的纬度/经度。

我目前正在运行如下聚合:

nonzero_cases[(nonzero_cases['Date'] == "03/13/2020")].groupby("Country").agg({"Lat":"first","Lon":"first","Cases":"sum"})

这会产生:

Country     Lat     Lon     Cases
Afghanistan 33.0000 65.0000 7
Albania 41.1533 20.1683 33
Algeria 28.0339 1.6596 26
Andorra 42.5063 1.5218 1
...

但这并不是我想要的,因为它没有考虑案例编号,只是选择了第一个纬度/经度。

最佳答案

添加DataFrame.sort_valuesCases 列,所以现在第一个值是每组最大 Cases 的行:

print (df)
Country Lat Lon Date Cases Status
0 Thailand 15.0 101.0 2020-01-22 00:00:00+00:00 2 confirmed
1 Thailand 15.0 101.0 2020-01-23 00:00:00+00:00 3 confirmed
2 Thailand 15.0 101.0 2020-01-24 00:00:00+00:00 5 confirmed
3 Thailand 15.0 101.0 2020-01-25 00:00:00+00:00 7 confirmed
4 Thailand 14.0 103.0 2020-01-26 00:00:00+00:00 8 confirmed <- changed data

df1 = (df.sort_values('Cases', ascending=False)
.groupby("Country")
.agg({"Lat":"first","Lon":"first","Cases":"sum"}))

print (df1)
Lat Lon Cases
Country
Thailand 14.0 103.0 25

关于python - Pandas 与另一列的最大值聚合分组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60682567/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com