优化熊猫循环

时间:2020-06-10 12:04:07

标签: python pandas dataframe

我有这个循环,以便为数据帧中的相同日期时间计算一个值

   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)

但这很慢。您能更快地做到这一点的方法吗?

谢谢

1 个答案:

答案 0 :(得分:1)

这只是分组方式:

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)