繁体   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