Subtiler Fehler in Pandas .Apply (Lambda G: G.shift (1, fill_value = 0) .Cumsum ())Python

Python-Programme
Guest
 Subtiler Fehler in Pandas .Apply (Lambda G: G.shift (1, fill_value = 0) .Cumsum ())

Post by Guest »

Ich habe einen Datenrahmen, der die Leistung von F1-Fahrern aufzeichnet, und es sieht aus wie < /p>

Code: Select all

Driver_ID   Date         Place
1          2025-02-13   1
1          2024-12-31   1
1          2024-11-03   2
1          2023-01-01   1
2          2025-01-13   5
2          2024-12-02   1
2          2024-11-12   2
2          2023-11-12   1
2          2023-05-12   1
und ich möchte neue Spalten Total_wins erstellen, die die Anzahl der Siege des Fahrers vor dem heutigen Rennen zählt, sodass die gewünschte Spalte wie
Driver_ID Date Place Total_wins
1 2025-02-13 1 2
1 2024-12-31 1 1
1 2024-11-03 2 1
1 2023-01-01 1 0
2 2025-01-13 5 3
2 2024-12-02 1 2
2 2024-11-12 2 2
2 2023-11-12 1 1
2 2023-05-12 1 0
< /code>
Und hier ist mein Code: < /p>
win = (df.assign(Date=Date)
.sort_values(['Driver_ID','Date'], ascending=[True,True])
['Place'].eq(1))

df['Total_wins']=(win.groupby(df['Driver_ID'], group_keys=False).apply(lambda g: g.shift(1, fill_value=0).cumsum()))
< /code>
Also funktioniert der Code (meistens) in Ordnung. Ich habe meistens, weil ich das Ergebnis manuell überprüft habe und die meisten Ergebnisse korrekt sind, aber für ein paar Zeilen liefert es falsche Ergebnisse wie < /p>
Driver_ID Date Place Total_wins
1 2025-02-13 1 2
1 2024-12-31 1 4
1 2024-11-03 2 1
1 2023-01-01 1 0
< /code>
Ich habe versucht, es zu debuggen, aber ich konnte nichts falsch finden. Gibt es einen subtilen Fehler in meinem Code, der den Fehler verursacht hat? Oder was ist der mögliche Grund dafür? Mein ursprünglicher Datenrahmen ist riesig (~ 150000 Zeilen)
Vielen Dank im Voraus

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post