パンダは別の列の最大でグループ化集計しますか?

rb612:

現在、私はいくつかの洞察を行うために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

私は(私たちは、この場合の合計欄を呼ぶことにします)、「ケース」欄の上に合計する、国によってグループ化するが、私は緯度と経度で問題に遭遇:私は長い例最大の/緯度を取りたいですカラム。換言すれば、Iは、症例の数が最も多い列から緯度と経度を希望します。明確にするために、ユースケースは、フランスのような国は、(例えばフランス領ポリネシアのような)複数の緯度と経度を持つ行を持っているということですが、私はほとんどの場合があります領域からグループに緯度/長い時間がかかるしたいと思います。

次のように私は、現在の集約を実行しています:

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_valuesの列によってCases今最初の値が最大である行、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

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=298414&siteId=1