Obtener la primera y última aparición de valor duplicado

0

Pregunta

Tengo un dataframe como este

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

Aquí col3 tiene un mismo valor duplicado (basado en el valor). Yo sum() col4 desde filas basadas en la col3 valor.

Así que en este caso tengo que hacer

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

Pero con este enfoque puedo conseguir

index    col3    col4
  0      abc     55
  1      xxx     30

Me gustaría ser capaz de preservar la primera aparición de la duplicación del valor col1(11/20) y la última aparición de col2(11/27), por lo que el producto final se parece a la

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

Mejor respuesta

2

Una forma de usar pandas.DataFrame.groupby.agg:

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

Salida:

  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 conversión de col1 y col2 datetime y el uso de min/max podría ser más robusto si siempre queremos "primera" (primera) fecha y el "último" (el más reciente) fecha. (De nuevo, esto depende de caso de uso)
Henry Ecker
0

Los Pandas proporciona first y last las agregaciones.

2021-11-24 05:28:04

En otros idiomas

Esta página está en otros idiomas

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