【发布时间】:2018-04-05 12:57:45
【问题描述】:
谁能告诉我下面的for循环是否可以调整得更快。下面的 for 循环在将近 20 万行的电子表格上运行,计算大约需要 22 小时。任何帮助将不胜感激。
所以我的初始电子表格有 2 列以绿色突出显示。
我的代码工作是根据下面代码中的条件将所有其他列填充为黄色。
我的初始电子表格:
我的代码(仅填写一列的示例):
for i in range(0,len(rolling)):
# Fill in the 3 Month OT
rolling.iloc[i,9]=sum(rolling.fSM_OT[(rolling['PERIOD_DATE'].isin(pd.date_range(rolling.BO3M[i], rolling.PERIOD_DATE[i]))) &
(rolling['CUSTOMER_ID']==rolling.CUSTOMER_ID[i]) &
(rolling['SUPPLIER_ID']==rolling.SUPPLIER_ID[i])
& (rolling['SUPPLIER_LOCATION_ID']==rolling.SUPPLIER_LOCATION_ID[i])])
【问题讨论】:
-
您可能不应该为这些计算使用显式循环。为什么不选择 1 个循环,创建一个最小的工作示例,并询问是否可以对其进行优化。另见minimal reproducible example。
标签: python pandas for-loop dataframe