1
Gibt es einige integrierte Aggregation zu Pandas (oder NumPy?) Ich kann verwenden, um die mit ***
markierte Linie unten zu optimieren?Verwenden Pandas für Aggregation integriert
>>> import numpy as np
>>> import pandas as pd
>>>
>>> df = pd.DataFrame({'A':[1,21,4,5,3,3,5,653,2], 'B':[1,2,3,4,5,6,7,8,9]})
>>> steps = 3
>>>
>>> values = df.iloc[:,0]
>>> current = values[-steps:]
>>> old = values[:-steps]
*** >>> mean = np.array([old[i::steps].mean() for i in range(steps)]) ***
>>> df.iloc[-steps:,0] = current - mean
>>> df1 = df.iloc[-steps:]
>>> df1
A B
6 2.0 7
7 641.0 8
8 -1.5 9
Schöne Lösung, genau das, was ich suchte! –
Wenn Shape nicht einfach durch "steps" teilbar ist, bekomme ich einen Fehler in der Form 'ValueError: kann Array der Größe 3025 nicht in Form umformen (1008)'. Kennen Sie einen einfachen Weg, um mein Array mit dem ersten Wert voranzustellen, bis ich es "Schritte" ausgerichtet habe? –
@ JonasByström Eine Lösung dafür hinzugefügt. Es gibt andere Wege, aber die gepostete scheint die kürzeste zu sein, um diese Fälle zu behandeln. – Divakar