Obtenir la première et la dernière occurrence de la valeur en double

0

La question

J'ai un dataframe comme ceci

index    col1     col2    col3    col4
  0      11/20    11/26   abc     35
  1      11/21    11/24   xxx     30
  2      11/22    11/27   abc     20

Ici col3 a une même valeur (dupliqué basée sur la valeur). J' sum() col4 à partir des lignes en fonction de la col3 de la valeur.

Donc dans ce cas je ne

df = df.groupby(['col3'])[['col4']].sum()

Mais avec cette approche-je obtenir

index    col3    col4
  0      abc     55
  1      xxx     30

Je voudrais être en mesure de préserver la survenue d'un premier événement de duplication de la valeur de col1(11/20) et la dernière occurrence de col2(11/27), de sorte que le produit final ressemble

index    col1     col2    col3    col4
  0      11/20    11/27   abc     55
  1      11/21    11/24   xxx     30

pandas python
2021-11-24 05:23:58
2

La meilleure réponse

2

Un chemin à l'aide pandas.DataFrame.groupby.agg:

new_df = df.groupby("col3", as_index=False).agg({"col1": "first",
                                                 "col2": "last",
                                                 "col4": "sum"})
print(new_df)

Sortie:

  col3   col1   col2  col4
0  abc  11/20  11/27    55
1  xxx  11/21  11/24    30
2021-11-24 05:27:44

La conversion de col1/col2 de type datetime et à l'aide de min/max peuvent être plus robuste si nous voulons toujours à la "première" (la plus ancienne) date et la "dernière" (les dernières) date d'. (Encore une fois cela dépend de cas d'utilisation)
Henry Ecker
0

Les Pandas fournit first et last les agrégations.

2021-11-24 05:28:04

Dans d'autres langues

Cette page est dans d'autres langues

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................