我正在尝试分析大量数据,首先我应用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'])
这段代码给出了正确的输出,但是速度很慢。我需要找到一些快速的方法来实现
答案 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']