【问题标题】:Create different pickle files iterating a list of DataFrames创建不同的pickle文件迭代DataFrames列表
【发布时间】:2016-10-25 19:16:36
【问题描述】:

我正在尝试编写一个函数,该函数将从包含 DataFrame 的列表中写入泡菜文件。我想遍历该列表并从每个 DataFrame 创建一个具有不同文件名的不同 pickle 文件。我写了这个函数:

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

return 1

这个函数只创建第一个pickle文件'filename_1.pkl'我怎样才能让它适用于我列表中的所有DataFrames?

【问题讨论】:

    标签: python-3.x pandas dataframe pickle


    【解决方案1】:

    你可以这样做:

    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)
    

    【讨论】:

    • 太棒了!谢谢麦克斯! HDF 是否为超大文件存储更多空间?或者,由于它的灵活性和便利性,无论文件大小如何,您都使用它?
    • @castor,很高兴我能帮上忙。我使用 HDF 是因为它非常灵活和方便,尤其是 its ability to query data conditionally,用于压缩文件,并且因为它的 speed
    【解决方案2】:

    我认为问题在于代码a=+1。你应该改写a += 1

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-09-03
      • 2017-02-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-08
      • 2018-10-20
      • 2016-05-14
      相关资源
      最近更新 更多