2016-10-25 10 views
1

Я пытаюсь написать функцию, которая будет писать pickle-файлы из списка, содержащего DataFrames. Я хочу перебрать этот список и создать из каждого DataFrame другой файл pickle с другим именем файла. Я написал эту функцию:Создайте различные файлы рассола, итерируя список DataFrames

def picklecreator(dflist): 
a=1 
for b in dflist: 
    b.to_pickle('filename_' + str(a) + '.pkl') 
    a=+1 

return 1 

Эта функция только создает первый рассол файл «filename_1.pkl» Как я могу сделать это, чтобы работать на всех DataFrames в моем списке?

ответ

0

Вы можете сделать это следующим образом:

def picklecreator(dflist): 
    for i, b in enumerate(dflist): 
     b.to_pickle(r'd:/temp/filename_{:02d}.pkl'.format(i+1)) 
    return 1 

Но я хотел бы использовать HDF магазин вместо этого - это гораздо более гибким и удобным.

Демо:

def save_dflist_hdfs(dflist, file_name_ptrn='d:/temp/data_{:02}.h5', **kwarg): 
    for i, df in enumerate(dflist): 
     df.to_hdf(file_name_ptrn.format(i+1), 'df{:02d}'.format(i+1), **kwarg) 
    return len(dflist)  

, то вы можете назвать это так:

save_dflist_hdfs(dflist, r'd:/temp/data_{:02}.h5', format='t', 
       complib='blosc', complevel=5) 
+0

Удивительный !! Благодаря MaxU! Является ли HDF больше для супер больших файлов? Или вы используете его независимо от размера файла из-за его гибкости и удобства? – castor

+0

@castor, рад, что я мог бы помочь. Я использую HDF, потому что он очень гибкий и удобный, особенно [его способность запрашивать данные условно] (http://stackoverflow.com/a/38401560/5741205), для сжатия файлов и из-за его [скорости] (http: //stackoverflow.com/questions/37010212/what-is-the-fastest-way-to-upload-a-big-csv-file-in-notebook-to-work-with-python/37012035#37012035) – MaxU

+0

получил Это! Спасибо за помощь – castor

 Смежные вопросы

  • Нет связанных вопросов^_^