Teilen Sie bestimmte Spalten durch eine andere Spalte in pandas
Frage mich, ob es eine effizientere Möglichkeit der Aufteilung in mehreren Spalten einer bestimmten Spalte. Zum Beispiel sage ich:
prev open close volume
20.77 20.87 19.87 962816
19.87 19.89 19.56 668076
19.56 19.96 20.1 578987
20.1 20.4 20.53 418597
Und ich möchte erhalten:
prev open close volume
20.77 1.0048 0.9567 962816
19.87 1.0010 0.9844 668076
19.56 1.0204 1.0276 578987
20.1 1.0149 1.0214 418597
Grundsätzlich, Spalten 'öffnen' und 'schließen' wurden, dividiert durch den Wert aus der Spalte 'prev.'
War ich in der Lage, dies zu tun durch
df['open'] = list(map(lambda x,y: x/y, df['open'],df['prev']))
df['close'] = list(map(lambda x,y: x/y, df['close'],df['prev']))
Ich Frage mich, ob es einen einfacheren Weg? Vor allem wenn es wie 10 Spalten aufgeteilt werden, indem der gleiche Wert sowieso?
- Warum nicht ich denke, dass....lol danke. Ich wusste, ich mache es komplizierter als es sein sollte
df.assign(open=df.open/df.prev, close=df.close/df.prev)
?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ausgabe:
Leistung, ich würde vorschlagen, mit der zugrunde liegenden array-Daten und
array-slicing
als zwei Spalten geändert werden, kommen in der Sequenz Ansicht in es -Zu eloborate ein bisschen mehr auf die array-slicing-Teil, mit
a[:,[1,2]]
gezwungen hätte, eine Kopie dort und würde verlangsamt es nach unten.a[:,[1,2]]
auf der dataframe Seite entsprichtdf[['open','close']]
und ich nehme an, verlangsamt die Dinge nach unten zu.df.iloc[:,1:3]
ist somit verbessert.Probe Gefahren -
Runtime test
Ansätze -
Timings -