私は600万行のパンダデータフレームを持っています。カラムは次のとおりです。2つのデータフレーム列の間で計算を行う最速の方法は?
['x', 'y']
私はx
y
間の単純な計算を適用し、データフレームに付加する必要があります。
は、これは私が試したものです:
'''
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)
残念ながら、これは...時間のとんでもない量をとり、実際に、私は完全にそれを参照してくださいしたことはありません。
これを行うより速い方法がありますか?私はあなたが別々のステップにこれを破ると、全体のデータフレームを反復を避けるならば、速度が劇的に増加すると考えてい
test_df['result'] = pressure_to_elevation(test_df['x'], test_df['y'])
これはあなたの__real__関数に依存します - あなたは実際の関数の定義を提供できますか?あなたの現在の質問については、最も速いでしょう: 'test_df ['result'] = test_df ['x'] + test_df ['y']' – MaxU
'.apply'の使用はデータフレーム内の行を反復するための略語です。 6M行、それは遅くなるでしょう。あなたのニーズに応じて、おそらく組み込みのパンダのメソッド/操作を使用してメソッドを見つけることができます。 – James
@MaxU大丈夫、実際の関数を含むように更新されました。 – pookie