从代表多级字典的字符串创建Dask数据框

时间:2019-03-08 04:04:30

标签: python pandas dictionary dask

我有一个庞大的数据集,我正在尝试从字符串列表中创建出dask数据框

align-middle

df_.head()

请注意,列c是字符串,因此我必须做A | B | C ---------------------------------------- 1 | "{a:1, {b:2, c:3}, d:5}" | 4 2 | "{a:5, {b:2, c:3}, d:0}" | 7 ...

在大熊猫中,我做了以下事情:

literal_eval

然后,在此之后,我将import ast for i in range(0,len(df_),1): df_.at[i,'B'] = ast.literal_eval(df_.iloc[i,2]) dat = pd.DataFrame() for i in range(len(df_)): #Makes the list of dicts into a dataframe b = pd.DataFrame(df_.iloc[i,2]) #Keeps track of row number b['A']=i #Concat with master DF dat=pd.concat([dat,b], axis=0, ignore_index=True) 与基于列A的原始数据帧(df_)合并。

此过程要花很长时间,所以我想尽快完成。

谢谢。

1 个答案:

答案 0 :(得分:0)

  

dat = pd.concat([dat,b],axis = 0,ignore_index = True)

在这一行中,您反复分配一个新的Pandas数据框,该框的大小不断增加。每次迭代重新创建数据帧可能非常缓慢。

您可以尝试使用mapapply之类的Pandas操作一次对输入数据框执行此操作。

您可能不需要Dask。最好从上面列出的简单优化开始,然后再引入并行计算的额外复杂性。