首页 > 解决方案 > 优化熊猫循环

问题描述

我有这个循环是为了计算数据框中相同日期时间的值

   for epoch in data_all['EPOCH'].unique():
    data_epoch = data_all.query('EPOCH==@epoch')
    data_epoch['SIGMA'] = pd.to_numeric(data_epoch['SIGMA'].values)
    variance = np.mean(data_epoch['SIGMA'].values ** 2)

但这很慢。你能用一种方法更快地做到这一点吗?

谢谢

标签: pythonpandasdataframe

解决方案


这只是分组:

variances = data_all.groupby('EPOCH')['SIGMA'].var()

或者,如果您想使用您的公式:

variances = (data_all['SIGMA']**2).groupby(data_all['EPOCH']).mean()

更新对于您的附加问题:

variances = data_all.groupby('EPOCH')['SIGMA'].transform('var')
data_all['GROUP'] = (variances<1).astype(int)

推荐阅读