如何在Python中并行化groupby操作?

时间:2019-10-17 03:48:57

标签: python python-3.x pandas dataframe parallel-processing

我的原始数据帧的大小为4779657 (rows) and 26(columns)

请找到示例数据框的代码

df = pd.DataFrame({
'subject_id':[1,1,1,1,2,2,2,2,3,3,4,4,4,4,4],
'readings' : ['READ_1','READ_2','READ_1','READ_3','READ_1','READ_5','READ_6','READ_8','READ_10','READ_12','READ_11','READ_14','READ_09','READ_08','READ_07'],
'val' :[5,6,7,11,5,7,16,12,13,56,32,13,45,43,46],
})

示例数据帧如下所示

enter image description here

我想执行以下操作(从长到宽)。在26列(真实数据中)中,我试图使用3 columns in groupby子句。谢谢@jezrael帮助我达到了这一水平

df1 = (df.groupby(['subject_id','readings'])['val']
    .describe()
    .unstack()
    .swaplevel(0,1,axis=1)
    .reindex(df['readings'].unique(), axis=1, level=0))
df1.columns = df1.columns.map('_'.join)
df1 = df1.reset_index()

上面的代码产生的输出如下图所示,与我的预期输出一致。唯一的问题是大型数据集的性能

enter image description here

已经超过半小时,代码仍在运行。我的系统信息是8 GB installed RAM,处理器是Intel Core i5-2500 CPU@3.30 GHZ,如果知道这仍然可以帮助您

您能帮我提高这段代码的效率吗?

0 个答案:

没有答案