使用jugs TaskGenerator进行Python pandas并行处理

时间:2017-06-05 06:57:20

标签: python pandas parallel-processing

我正在尝试读取pandas数据帧并执行某些操作并返回数据帧。我还希望对操作进行多处理,以利用我的系统拥有的多个内核。

import pandas as pd
import re
from jug import TaskGenerator
@TaskGenerator
def find_replace(input_path_find):
    start_time = time.clock()
    df_find = pd.read_csv(input_path_find)
    df_find.currentTitle=df_find.currentTitle.str.replace(r"[^a-zA-Z0-9`~!|@#%&_}={:\"\];<>,./. -]",r'')
    #extra space
    df_find.currentTitle=df_find.currentTitle.str.replace('\s+', ' ')
    #length
    df_find['currentTitle_sort'] = df_find.currentTitle.str.len()
    #sort
    df_find = df_find.sort_values(by='currentTitle_sort',ascending=0)
    #reindx
    df_find.reset_index(drop=True,inplace=True)
    del df_find['currentTitle_sort']
    return df_find

当我传递我想要处理的CSV文件参数时

df_returned = find_replace('C:\\Users\\Dell\\Downloads\\Find_Replace_in_this_v1.csv')

我得到一些奇怪的输出

find_replace
Task(__main__.find_replace, args=('C:\\Users\\Dell\\Downloads\\Find_Replace_in_this_v1.csv',), kwargs={})
    In [ ]:

有任何帮助吗?我基本上想要保存函数

的输出

我已经检查了答案但它没有用。另外,我使用的是pythono 2.7和anaconda IDE Pandas memoization

1 个答案:

答案 0 :(得分:0)

这是对jug如何运作的误解。

您获得的结果确实是一个Task对象,您可以运行它:df_returned.run()

但是,通常情况下,您可以将此脚本保存到文件(例如analysis.py)并调用jug execute analysis.py来执行任务。