我对Python不够熟悉,不明白如何能让for循环走得更快。以下是我想做的事情。
假设我们有以下的价格数据框架。
import pandas as pd
df = pd.DataFrame.from_dict({'price': {0: 98, 1: 99, 2: 101, 3: 99, 4: 97, 5: 100, 6: 100, 7: 98}})
我们的目标是创建一个名为updown的新列,将每一行分类为 "向上 "或 "向下",标志着在查看随后的每一行时,首先是什么--向上2,或向下2。
df['updown'] = 0
for i in range(df.shape[0]):
while df.price.iloc[i+j] < (df.price.iloc[i] + 2) and df.price.iloc[i+j] > (df.price.iloc[i] - 2):
j= j+1
if df.price.iloc[i+j] >= (df.price.iloc[i] + 2):
df.updown.iloc[i] = "Up"
if df.price.iloc[i+j] <= (df.price.iloc[i] - 2):
df.updown.iloc[i] = "Down"
这样做很好,但在运行数百万行时,运行速度就太慢了。请注意,我知道一旦代码运行到最后一行,就会抛出一个错误,这对我来说很好。
我在哪里可以学到如何使这样的事情发生得更快(最好是几秒钟,或至少几分钟,而不是10多个小时,这就是现在需要的时间。