如何从URL列表中创建Dask DataFrame?

时间:2017-03-29 21:15:40

标签: python pandas dask

我有一个网址列表,我很乐意将它们读到dask数据框 立刻,但看起来read_csv不能使用http的星号。有没有办法实现这个目标?

以下是一个例子:

link = 'http://web.mta.info/developers/'

data = [     'data/nyct/turnstile/turnstile_170128.txt',
                        'data/nyct/turnstile/turnstile_170121.txt',
                        'data/nyct/turnstile/turnstile_170114.txt',
                        'data/nyct/turnstile/turnstile_170107.txt' 
        ]

我想要的是

df = dd.read_csv('XXXX*X')

1 个答案:

答案 0 :(得分:7)

尝试使用dask.delayed将每个网址转换为懒惰的pandas数据框,然后使用dask.dataframe.from_delayed将这些延迟值转换为完整的dask数据框

import pandas as pd
import dask
import dask.dataframe as dd

dfs = [dask.delayed(pd.read_csv)(url) for url in urls]

df = dd.from_delayed(dfs)

这将立即读取一个您的链接,以便找出元数据(列,dtypes)。如果您提前知道这些dtypes和链接,那么您可以通过将示例空数据帧传递给dd.from_delayed(..., meta=sample_df)

来避免这种情况。

另请参阅:http://dask.pydata.org/en/latest/delayed-collections.html