簡體   English   中英

在 Dataframe 中使用 .loc 性能不佳

[英]Poor performance using .loc in Dataframe

我正在嘗試通過此 dataframe 的索引組合某些列,我使用簡單的 pd.cov() function 來計算 u_centro、v_centro 和 w_centro 的方差和協方差。

在此處輸入圖像描述

但是,當我嘗試使用 .loc 對這些值進行切片時,性能非常慢(非常慢。):例如:

df_uu = df.loc[(iz_centro,'u_centro'),'u_centro']

我想要 u_centro 的所有 u_centro 組合。 結果正是我想要的,但是完成這個花費的時間太荒謬了,超過 10 分鍾。

在此處輸入圖像描述

全部數據: https://raw.githubusercontent.com/AlessandroMDO/LargeEddySimulation/master/sd.csv

有不同的方法可以做到這一點,但最好的性能是使用矢量化函數,例如xs (感謝@Paul H)或 boolean 掩碼:

 startime = datetime.now()

 mask = df.index.get_level_values(1) == 'u_centro'
 df.loc[mask]

 print(datetime.now() - startime) # 0:00:00.001417

我不知道在這種情況下1417 µs是否很重要。

暫無
暫無

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

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