Pandas d'agrégats de regroupement avec le maximum d'une autre colonne?

rb612:

À l'heure actuelle, je travaille avec l'ensemble de données Covid faire quelques idées.

L'ensemble de données est de cette forme:

    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

Je veux groupe par pays, en sommant sur la colonne « Cas » (nous appellerons cette colonne somme de cas), mais je rencontre un problème avec la latitude et la longitude: Je veux prendre le lat / long du maximum de l'affaire colonne. En d'autres termes, je voudrais la latitude et la longitude de la ligne avec le plus grand nombre de cas. Pour clarifier, le cas d'utilisation est qu'un pays comme la France a des lignes avec de multiples latitude et longitudes (comme Polynésie française par exemple), mais je veux juste prendre le lat / long dans le groupement de la région qui a la plupart des cas.

Je utilise actuellement une agrégation comme suit:

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

Cela donne:

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
...

Mais ce n'est pas tout à fait ce que je veux, car il ne tient pas compte du nombre de cas, et prend juste la première Lat / Lon.

Jezréel:

Ajouter DataFrame.sort_valuespar colonne Cases, maintenant premières valeurs sont des lignes avec un maximum de Casespar groupes:

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

Je suppose que tu aimes

Origine http://43.154.161.224:23101/article/api/json?id=298417&siteId=1
conseillé
Classement