import multiprocessing as mp pool = mp.Pool(processes=mp.cpu_count()) def func( arg ): idx,row = arg # Edit df return row new_rows = pool.map( func, [(idx,row) for idx,row in data_all.iterrows()]) data_all_new = pd.concat( new_rows )