如何从URL列表创建Dask DataFrame?

4
我有一串URL列表,希望能够一次性读取到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' 
        ]

and what I want is

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

1个回答

8

尝试使用dask.delayed将每个URL转换为惰性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)

为了获取元数据(列,数据类型),此操作将立即读取您的链接之一。如果您事先知道这些数据类型和链接,则可以通过向dd.from_delayed(...,meta = sample_df)传递一个空数据框来避免此操作。

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接