python - 如何在我迭代数据帧中的行时加快这个循环
问题描述
TimePeriods2 = [1440] # other elements will be populated to this list later
MovingAverages = [50] # other elements will be populated to this list later
for Time in TimePeriods2:
k = 1
for MA in MovingAverages:
for i in range(len(df)):
if (df["Close"][i] > df[f"{MA*Time} MA"][i]) & (df["Close"][i+Time] > df[f"{MA*Time} MA"][i+Time]):
df[f"Moving Average (not crossover) Strategy {k} on {Time} Mins"][i] = "Buy"
df[f"Moving Average (not crossover) Strategy {k} on {Time} Mins"] = df[f"Moving Average (not crossover) Strategy {k} on {Time} Mins"].fillna("Sell")
df[f"Moving Average (not crossover) Strategy {k} on {Time} Mins"] = df[f"Moving Average (not crossover) Strategy {k} on {Time} Mins"].astype("category")
k += 1
print(f"Time period {Time} complete")
我尝试了以下方法:
TimePeriods2 = [1440] # other elements will be populated to this list later
MovingAverages = [50] # other elements will be populated to this list later
for Time in TimePeriods2:
k = 1
for MA in MovingAverages:
df.loc[( (df["Close"] > df[f"{MA*Time} MA"]) & (df["Close"][i+Time] > df[f"{MA*Time} MA"][i+Time]) ), f"Moving Average (not crossover) Strategy {k} on {Time} Mins"] = "Buy"
df[f"Moving Average (not crossover) Strategy {k} on {Time} Mins"] = df[f"Moving Average (not crossover) Strategy {k} on {Time} Mins"].fillna("Sell")
df[f"Moving Average (not crossover) Strategy {k} on {Time} Mins"] = df[f"Moving Average (not crossover) Strategy {k} on {Time} Mins"].astype("category")
k += 1
print(f"Time period {Time} complete")
但似乎你不能像这样使用 .loc 方法,我的数据框有大约 140 万行,所以不用说第一种方法需要永远,而第二种方法要快得多,除了我无法得到它好好工作。
解决方案
推荐阅读
- google-tag-manager - 为什么 Google 相关的 URL 有时会出现如此多的超时?
- python - 使用处理文件中的行的 multiprocessing.pool 时,全局/共享计数器的困难(Python)
- python - wsgi 文件不导入flaskapp
- javascript - 我应该在 MongoDB 中使用猫鼬方法链接或聚合吗?
- docker - 在 Dockerfile 中添加自定义 openssl.cnf 以生成 SSL
- python - 具有复数元素的 Numpy 矩阵向量乘法
- reactjs - Reactjs屏幕不刷新,更新时总是落后一个循环
- arrays - 在常见的 lisp 中,使用 '#(...) 或仅使用 #(...) 创建向量有什么区别?
- python - SQL 中的中间聚合函数和数据操作
- azure - 有没有办法使用二头肌将 Azure 防火墙连接到 Front Door 高级策略?