使用多处理而不是多线程并行化pandas数据帧行迭代

时间:2017-09-19 18:39:08

标签: python multithreading pandas dataframe python-multiprocessing

我正在迭代数据帧的每一行,我想知道是否有一种方法可以使用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_valfinal_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 |

0 个答案:

没有答案