任何人都可以告诉我,如果下面的for循环可以调整得更快。下面的for循环在几乎20万行的电子表格上运行,计算大约需要22个小时。任何帮助将不胜感激。
因此,我的初始电子表格中有两列以绿色突出显示。
我的代码工作是根据下面代码中的条件填写黄色的所有其他列。
我的初始电子表格:
我的代码(Sample只填充一列):
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])])
答案 0 :(得分:1)
是的,降低到最小的复杂度然后优化为@jpp评论。
看看这个,用Python快速完成这样的事情的好方法。 http://chriskiehl.com/article/parallelism-in-one-line/