问题是我为每个项目提供了30个文件,其中包含每个45k行,其中约20个数据被分成包含~100行的某些子部分
在某些代码中,我会将子部分放在数据框中的部分中 然后在将readed和解析数据放入字典的代码的末尾看起来像这样
d4={}
V1=data_inputs
K1=V1.keys()
for k1 in K1: #k1 is file number
d3={}
V2=V1[k1]
K2=V2.keys()
for k2 in K2: #k2 is superpart number
d2={}
V21=V2[k2]
K21=V21.keys()
for k21 in K21: #k21 is part number
V22=V21[k21]
K22=V22.keys()
for k22 in K22: #k22 is part name
V23=V22[k22]
[...]
d1=SOME_PARSING_FUNCTION(...)
d2[k21]={k22:d1}
d3[k2]=d2
d4[k1]=d3
return d4
所以输出有方案:
{k1:{k2:{k21:{k22:pd.DF or pd.Panel or pd.Panel4D}}}}
和代码输出
{01:{5:{01:{name1:DF},02:{name2:P},...,15:{name15}},
8:{01:{name1:DF},02:{name2:P},...,30:{name30}}}
{...}
{30:{5:{01:{name1:DF},02:{name2:P},...,15:{name15}},
8:{01:{name1:DF},02:{name2:P},...,30:{name30}}}
但它仅用于项目1,如果我要解析更多项目,它会消耗太多内存我认为
问题:所以最好使用pickle.dumpy()将每个子目录写入某个tmp文件,然后读取它?
任何人都知道如何做到这一点?我的意思是,我应该把文件的每个子目录或文件的整个目录放到tmp文件中?
问题2:如何稍后阅读所有这些tmp文件并将所有文件放入一个pickle文件中?
afther代码完成所有操作,我把它写入一个大的原始腌制h5文件,并从那里我再次阅读它并放入另一个h5文件,但有一些方案,如:
'/k1/k2/k21/k22/' V22
或
'/k2/k21/k22/k1/' V22
其中V22是DataFrame等形式的某些值 (而且这部分代码的时间比制作目录要快得多)
答案 0 :(得分:0)
将子部分连接成部分并不是一个好主意,尤其是当子部件具有巨大的尺寸时。 尝试单独解析每个文件并将结果附加到单个输出文件中。 这种方法应该更快,并且还允许您避免使用tmp文件。