【问题标题】:Any way for a faster Python For Loop更快的 Python For 循环的任何方式
【发布时间】: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


【解决方案1】:

是的,将复杂性降低到最低限度,然后按照@jpp 的评论进行优化。

也看看这个,这是使用 Python 快速完成此类事情的好方法。 http://chriskiehl.com/article/parallelism-in-one-line/

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-05-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-15
    • 1970-01-01
    • 2019-12-25
    • 1970-01-01
    相关资源
    最近更新 更多