Zdobądź pierwsze i ostatnie wystąpienie powtarzające się wartości

0

Pytanie

Mam dataframe podobny do tego

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

Tutaj col3 ma taką samą wartość (powielona na podstawie wartości). Ja sum() col4 z wierszy opartych na col3 wartość.

Tak że w tym przypadku robię

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

Ale przy takim podejściu dostaję

index    col3    col4
  0      abc     55
  1      xxx     30

Chciałbym mieć możliwość zapisania pierwsze pojawienie się duplikatów wartości col1(11/20) i ostatni występ col2(11/27), dlatego produkt końcowy będzie wyglądać w następujący sposób

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

Najlepsza odpowiedź

2

Jednym ze sposobów wykorzystania pandas.DataFrame.groupby.agg:

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

Wyjście:

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

Konwersja col1/kol2 w datetime i korzystanie z min/max może być bardziej wiarygodne, jeśli zawsze chcemy "pierwszej" (najwcześniejszy) datę i "ostatni" (ostatnim) dniu. (Znowu, to zależy od sposobu użytkowania)
Henry Ecker
0

Pandy zapewniająfirst ilast agregacji.

2021-11-24 05:28:04

W innych językach

Ta strona jest w innych językach

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