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

Pandas 当我编写这段特定代码时,我的jupiter笔记本在给出任何输出(保持运行)之前需要花费很长时间,pandas,datetime,Pandas,Datetime,当我编写这段代码时,我的Jupiter笔记本会在提供任何输出之前持续运行大约10分钟。当然,您可以通过跳过pd.where()来提高速度 速度比较: 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'].

当我编写这段代码时,我的Jupiter笔记本会在提供任何输出之前持续运行大约10分钟。当然,您可以通过跳过pd.where()来提高速度

速度比较:

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)    
您的新代码的运行速度应大约为10倍:

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)
也有可能使用pd.Series.agg()会加快速度:

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.where()来提高速度

速度比较:

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)    
您的新代码的运行速度应大约为10倍:

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)
也有可能使用pd.Series.agg()会加快速度:

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()))

df和datelist的形状是什么?df是一个由16000行组成的数据框,datelist是一个由3600个条目组成的列表。df和datelist的形状是什么?df是一个由16000行组成的数据框,datelist是一个由3600个条目组成的列表。“Series”对象没有属性“agg”--当我试图使用pd.Series.agg()我尝试通过删除pd.where()来实现,但仍然需要尽可能多的时间。您可以尝试使用.agg()方法吗?我已经更新了我的答案。这次它显示了一条消息---“DataFrame”对象没有属性“agg”,您正在运行哪个版本的pandas?pd.agg()在版本0.20中是新的'Series'对象没有属性'agg'——此错误消息显示当我尝试使用pd.Series.agg()时,我尝试通过删除pd.where()来执行此操作,但仍然需要尽可能多的时间。您可以尝试.agg()方法吗?我已经更新了我的答案。这次它显示了一条消息---“DataFrame”对象没有属性“agg”,您正在运行哪个版本的pandas?pd.agg()是0.20版中的新版本