Seite 1 von 1

Pandas Spalte: wieoft gleicher Wert hintereinander erscheint

Verfasst: Samstag 10. August 2019, 15:52
von Bayne
Hey,
könnte einen Weg brauchen, wie ich aus einem Pandas Dataframe eine spalte extrahieren kann, die anzeigt, wieoft der jetzige wert in den zeilen davor ununterbrochen angezeigt wurde.

Etwa nach dem Schema:

Code: Alles auswählen

df = pd.DataFrame([10, 10, 23, 23, 9, 9, 9, 10, 10, 10, 10, 12], columns=['RiseOrFall'])
der Output sollte dann sein:
0
1
0
1
0
1
2
0
1
2
3
0

Das Ziel ist eine neue Spalte wie oben zu erstellen der diesen Count als integer im Selben Index, wie der eigentliche Wert besitzt

Re: Pandas Spalte: wieoft gleicher Wert hintereinander erscheint

Verfasst: Samstag 10. August 2019, 21:22
von Sirius3
Das könnte man so machen. Zuerst mußt Du herausfinden, ob der Wert vorher identisch war:

Code: Alles auswählen

same_as_before = df.diff()==0
Dann kann man per cumsum die True-Werte aufaddieren:

Code: Alles auswählen

summed = same_as_before.cumsum()
Jetzt wird aber über alle Werte addiert, so dass man den Offset, wenn von einer Zahl zur nächsten gesprungen wird, wieder abziehen muß. Diese Offsets bekommt man an den Stellen, wo same_as_before False ist:

Code: Alles auswählen

offsets = summed[~same_as_before]
Jetzt muß man nur noch die nan-Lücken füllen:

Code: Alles auswählen

offsets = offsets.fillna(method="pad")
Und von den aufsummierten Werten abziehen

Code: Alles auswählen

count = summed - offsets

Re: Pandas Spalte: wieoft gleicher Wert hintereinander erscheint

Verfasst: Sonntag 11. August 2019, 00:28
von Bayne
Dankesehr :)