无法对Python Jupyter笔记本中的嵌套for循环函数使用多重处理

无法对Python Jupyter笔记本中的嵌套for循环函数使用多重处理,python,function,for-loop,jupyter-notebook,python-multiprocessing,Python,Function,For Loop,Jupyter Notebook,Python Multiprocessing,我尝试了多种技术来使用多种处理,但失败了。正常的for循环需要几天才能执行,我可能做错了什么,或者代码没有优化 for i in range(0,len(Years)): colname = int(Years[i]) Status[str(colname)] = '' for j in range(0,len(Unique_ID)): sample = SA_data[SA_data.accountID==Uni

我尝试了多种技术来使用多种处理,但失败了。正常的for循环需要几天才能执行,我可能做错了什么,或者代码没有优化


    for i in range(0,len(Years)):
        colname = int(Years[i])
        Status[str(colname)] = ''
        for j in range(0,len(Unique_ID)):
            sample = SA_data[SA_data.accountID==Unique_ID[j]]
            Status.loc[j, 'accountID'] = Unique_ID[j]
            Status.loc[j, str(colname)] = np.where((((sample['YearMonth_Start'].values)<colname) & ((sample['saStatus'].values)=='Active')).any(),'True',
                          np.where((((sample['YearMonth_Start'].values)<colname) & ((sample['YearMonth_End'].values)>colname) ).any(),'True','False'))



对于范围(0,len(年))内的i:
colname=int(年[i])
状态[str(colname)]=''
对于范围(0,len(唯一_ID))中的j:
sample=SA_data[SA_data.accountID==Unique_ID[j]]
Status.loc[j,‘accountID']=唯一的_ID[j]

Status.loc[j,str(colname)]=np.where(((sample['YearMonth\u Start'].values)假设您使用的是pandas,我认为您应该根据其accountID列对SA_数据进行分组,即
SA_data.groupby('accountID'))
然后使用其apply函数将函数应用于每个组。这样,您将删除其中一个for循环。您的代码将扫描SA_数据16*360000次(因此SA_数据的每一行迭代16*360000次),但对于groupby,代码将仅迭代每一行17次(每年16次,加上groupby期间的一次)@Ali_-MM非常感谢。它非常有效。我还有一件事要问,现在需要20分钟。那么有什么方法可以使用多处理或并行处理来缩短执行时间。再次感谢