当我写这段特定的代码时,我的jupiter笔记本在给出任何输出(保持运行)之前需要很长时间


for j in range(len(datelist)):
tempmax.append((df.where(df['Date']==datelist[j])['Data_Value'].max()))
tempmin.append((df.where(df['Date']==datelist[j])['Data_Value'].min()))
print(tempmax)    

当我写这段代码时,我的Jupiter笔记本在提供任何输出之前会运行大约10分钟

首先,您可以通过跳过pd.where((来提高速度

速度比较:

df = pd.DataFrame()
df['a'] = range(16000)
df['b'] = range(16000)
%timeit df.where(df['a']==2)['b'].max()
>>> 6.31 ms ± 124 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)
%timeit df[df['a']==2]['b'].max()
>>> 777 µs ± 8.14 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)

你的新代码应该运行速度大约是的10倍

for j in range(len(datelist)):
tempmax.append((df[df['Date']==datelist[j]]['Data_Value'].max()))
tempmin.append((df[df['Date']==datelist[j]]['Data_Value'].min()))

使用pd.Series.agg((也有可能会加快速度:

for j in range(len(datelist)):
search = df[df['Date']==datelist[j]].agg(['max','min'])['Data_Value']
tempmax.append(search['max'])
tempmin.append(search['min'])

最新更新