多处理for循环,该循环附加到带有多个参数的pandas数据帧

时间:2020-08-14 17:11:38

标签: python dataframe for-loop multiprocessing

我正在尝试找到一种多功能处理此功能的方法。

from multiprocessing import Pool
import pandas 


#csv, dfew1

def dataframe_iterator(csv, dfnew1):
    for item in csv['Trips_Tbl_ID'].unique():
            # creating a temporary file for each unique trip table ID
            dftemp = traveL_time(item, 'all')
            # appending the temporary file to a new file
            dfnew1 = dfnew1.append(dftemp)

    return dfnew1

if __name__ == '__main__':
    args = [(csv), (dfnew1)]
    start_time = time.time()

    pool = Pool()
    pool.map(dataframe_iterator, args)
    pool.close()
    pool.join()

print("--- %s seconds ---" % (time.time() - start_time))

某些上下文:

'csv'是一个巨大的数据框,其中包含一堆混乱的运输记录和许多非唯一的行程表ID。它已在jupyter笔记本中被调用。

对于csv中的每个唯一行程表ID,我正在应用一个称为traveL_time的计算量大的定制函数来对其进行转换和压缩。

'dfnew1'是一个定制的空数据框,其结构与将traveL_time函数应用于'csv'后的数据框具有完全相同的结构,这就是为什么我在for循环中将其附加到它。它已在jupyter笔记本中被调用。

我对python来说还很陌生,我在加速运行时遇到了一些麻烦,因为它确实是一个庞大的数据集,目前要花9分钟的时间才能在“ csv”中查看超过15万条记录,所以我最终不得不超过亿条记录。

我的问题是,如何使用两个参数csv和dfnew1来多处处理此功能,从而有可能加快速度?

我尝试使用pandarallel,但出现了很多错误,而且我不确定如何对多重处理库使用多个参数。另外,当前的设置似乎永远都在进行,我确定这是错误的。

谢谢。

0 个答案:

没有答案