如何通过删除for循环使代码更快

时间:2019-10-21 07:51:26

标签: python python-3.x pandas numpy pandas-groupby

我正在尝试分析大量数据,首先我应用groupby函数将数据分为不同的组。然后我检查每组中的一些条件是否满足条件,然后计算均值,最大值和其他一些特征,下面的代码可以正常工作,但它的效率很低。在我的情况下,组总数超过50000。

x=df.groupby(pd.Grouper(freq='10Min', base=30, label='right'))
for name,df in x:
    min_x=np.min(df['A'])
    y_max=np.max(df['B'])
    z_max=np.max(df['C'])
    if (z_max<60)&(min_x>2) & (y_max<35):
        mean_D=np.mean(df['D'])

这段代码给出了正确的输出,但是速度很慢。我需要找到一些快速的方法来实现

1 个答案:

答案 0 :(得分:2)

一个主意应该是:

df1=(df.groupby(pd.Grouper(freq='10Min', base=30, label='right'))
       .agg({'A':'min', 'B':'max', 'C':'max', 'D':'mean'}))

s = df1.loc[(df1['C']<60)&(df1['A']>2) & (df1['B']<35), 'D']