Ich habe einen Pandas-Datenrahmen mit 6 Millionen Zeilen. Die Säulen sind:Schnellste Möglichkeit zur Berechnung zwischen zwei Datensammelsäulen?
['x', 'y']
Ich brauche eine einfache Berechnung zwischen x
ein y
, anzuwenden und an den Datenrahmen anhängen. Diese
ist, was ich habe versucht:
'''
Calculates the height of a pressure level in feet
'''
def pressure_to_elevation(P, T = None):
sea_level_pressure = 1013.25
if T is not None:
# https://www.omnicalculator.com/physics/air-pressure-at-altitude
P0 = sea_level_pressure
g = 9.80665
M = 0.0289644
R0 = 8.31447
m = (np.log(P/P0)*T)/-(g*M/R0)
f = 3.28084 * m
return f
b = 0.190284
c = 145366.45
return (1-math.pow((P/sea_level_pressure), b)) * c
test_df['result'] = test_fd.apply(lambda row: pressure_to_elevation(row['x'], row['y']),axis=1)
Leider dauert dies eine lächerliche Menge an Zeit ... in der Tat, ich habe noch es komplett zu sehen.
Gibt es einen schnelleren Weg, dies zu tun? diese
Dies hängt von Ihrer __real__ Funktion ab - können Sie eine Definition der realen Funktion angeben? Für Ihre aktuelle Frage wäre die schnellste: 'test_df ['result'] = test_df ['x'] + test_df ['y']' – MaxU
Die Verwendung von '.apply' ist eine Abkürzung für die Iteration über die Zeilen im Datenrahmen, die mit 6M Reihen, das wird langsam sein. Abhängig von Ihren Bedürfnissen können Sie wahrscheinlich eine Methode finden, die die eingebauten Pandas Methoden/Operationen verwendet. – James
@MaxU OK, aktualisiert, um die eigentliche Funktion zu enthalten. – pookie