簡體   English   中英

Pandas Dataframe,尋找加速使用數學的df.apply的方法

[英]Pandas Dataframe, looking for way to speed up df.apply that uses math

我正在使用具有2900萬行的Pandas Dataframe。 我正在基於都是浮點數的四列進行計算。

此通話耗時1100秒:

df['d_from_avg'] = df.apply(lambda row: \
    math.sqrt((row.x - row.avg_x)**2 + (row.y - row.avg_y)**2),axis=1)

有人對加快速度有任何建議嗎? 在這種情況下,有沒有比應用申請更好的選擇?

您可以使用向量化運算,而不用逐行計算。

嘗試這個:

import numpy as np
np.sqrt((df['x'] - df['avg_x'])**2 + (df['y'] - df['avg_y'])**2) 

它將比應用快得多(在具有1000行的數據幀上嘗試過):

%timeit t = np.sqrt((df['x'] - df['avg_x'])**2 + (df['y'] - df['avg_y'])**2) 
1000 loops, best of 3: 280 µs per loop

%timeit t = df.apply(lambda row: \
    math.sqrt((row.x - row.avg_x)**2 + (row.y - row.avg_y)**2),axis=1)
10 loops, best of 3: 40.5 ms per loop

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM