我正在迭代数据帧的每一行,我想知道是否有一种方法可以使用python的multiprocessing
而不是线程来并行化迭代并加快进程?
我正在使用thread
,如下所示:
def whole(row):
final_wt = []
final_val=[]
wt = row[2] + 0.6*row[4] + 0.6*row[6] + 0.3*row[8]
final_wt.append(wt)
if row[1] == 'High':
if row[3] == 'Low' and row[5] == 'Low' and row[7] == 'Low':
final_val.append('Mod')
else:
final_val.append('High')
elif row[1] == 'Mod':
if row[3] == 'High' and row[5] == 'High':
final_val.append('High')
else:
final_val.append('Mod')
elif row[1] == 'Low':
if row[3] == 'High' and row[5] == 'High':
final_val.append('Mod')
else:
final_val.append('Low')
return final_val, final_wt
if __name__ == "__main__":
for index, row in df.iterrows():
t = Thread(target=whole, args=(row,))
t.start()
最后,我想获得包含整个数据框值的final_val
和final_wt
列表。我如何使用from multiprocessing import Pool
?
更新:
下面的示例df(实际的一个是600,000行):
df =
ID | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
ABC1 | High | 1.0 | Low | 0.8 | Mod | 0.7 | Low | 1.0 |
CDV2 | High | 1.0 | Low | 0.8 | Mod | 0.7 | Low | 1.0 |