【问题标题】:reading multiple files into dask dataframe将多个文件读入 dask 数据帧
【发布时间】:2021-04-13 14:30:47
【问题描述】:

我想将多个 csv 文件读入一个单独的 dask 数据帧。由于某些原因,我的原始数据的某些部分丢失了(不知道为什么?!)。我想知道将它们全部读入dask的最佳方法是什么?我使用了一个 for 循环,但不确定它是否正确。

 for file in os.listdir(dds_glob):
    if file.endswith('issued_processed.txt'):
        ddf = dd.read_fwf(os.path.join(dds_glob,file),
                          colspecs=cols,
                          header=None,
                          dtype=object,
                          names=names)

或者我应该使用这样的东西:

dfs = delayed(pd.read_fwf)('/data/input/*issued_processed.txt',
                           colspecs=cols,
                           header=None,
                           dtype=object,
                           names=names)  
ddf = dd.from_delayed(dfs)

【问题讨论】:

    标签: python dask dask-dataframe


    【解决方案1】:

    至少有两种方法:

    1. dask.dataframe 提供文件列表,因此使用您的第一个sn-p 它看起来像:
    file_list = [
        os.path.join(dds_glob,file)
        for file os.listdir(dds_glob) if file.endswith('issued_processed.txt')
    ]
    
    # other options are skipped for convenience
    ddf = dd.read_fwf(file_list)
    
    1. delayed 对象构造数据帧,使用您的第二个 sn-p 将如下所示:
    # other options are skipped, but can be included after the `file`
    dfs = [delayed(pd.read_fwf)(file) for file in file_list] 
    ddf = dd.from_delayed(dfs)
    

    第一种方法可以解决大约 82% 的用例,但对于其他情况,您可能需要尝试第二种方法或更复杂的方法。

    【讨论】:

    • 我喜欢“其他用例”:)
    • 谢谢,两者都运行顺利,但我在其余的计算中还有一些其他问题
    猜你喜欢
    • 2019-01-16
    • 2012-06-28
    • 2019-06-26
    • 2018-06-24
    • 2021-10-29
    • 2018-03-01
    • 2011-07-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多