dask.dataframe.read_fwf
dask.dataframe.read_fwf¶
- dask.dataframe.read_fwf(urlpath, blocksize='default', lineterminator=None, compression='infer', sample=256000, sample_rows=10, enforce=False, assume_missing=False, storage_options=None, include_path_column=False, **kwargs)¶
将固定宽度的文件读入 Dask.DataFrame
这以以下方式并行化了
pandas.read_fwf()
函数:它支持使用 globstrings 一次性加载多个文件:
>>> df = dd.read_fwf('myfiles.*.csv')
在某些情况下,它可以分解大文件:
>>> df = dd.read_fwf('largefile.csv', blocksize=25e6) # 25MB chunks
它可以通过提供URL从外部资源(例如S3、HDFS)读取CSV文件:
>>> df = dd.read_fwf('s3://bucket/myfiles.*.csv') >>> df = dd.read_fwf('hdfs:///myfiles.*.csv') >>> df = dd.read_fwf('hdfs://namenode.example.com/myfiles.*.csv')
在内部,
dd.read_fwf
使用pandas.read_fwf()
并支持许多相同的性能保证的关键字参数。有关可用关键字参数的更多信息,请参阅pandas.read_fwf()
的文档字符串。- 参数
- urlpath字符串或列表
绝对或相对文件路径。使用
s3://
等协议前缀可以从其他文件系统读取。要从多个文件读取,可以传递一个全局字符串或路径列表,但前提是它们必须使用相同的协议。- 块大小str, int 或 None, 可选
用于分割较大文件的字节数。默认值根据可用物理内存和核心数计算,最大为64MB。可以是像
64000000
这样的数字,或者是像"64MB"
这样的字符串。如果为None
,则每个文件使用一个块。- 示例int, 可选
确定数据类型时使用的字节数
- 假设缺失bool, 可选
如果为 True,所有未在
dtype
中指定的整数列都被假定为包含缺失值,并被转换为浮点数。默认为 False。- 存储选项dict, 可选
特定存储连接有意义的额外选项,例如主机、端口、用户名、密码等。
- include_path_column布尔值或字符串,可选
是否包含每个特定文件的路径。如果为 True,则会在数据框中添加一个名为
path
的新列。如果为字符串,则设置新列的名称。默认为 False。- **kwargs
传递给
pandas.read_fwf()
的额外关键字参数。
注释
Dask dataframe 尝试通过从文件开头(或如果是 glob 则从第一个文件)读取样本,来推断每一列的
dtype
。通常这工作得很好,但如果文件中(或在其他文件中)的dtype
不同,这可能会导致问题。例如,如果样本中的所有行都是整数类型,但后来有一个NaN
,那么在计算时就会出错。要解决这个问题,你有几个选项:使用
dtype
关键字为有问题的列提供显式数据类型。这是推荐的解决方案。使用
assume_missing
关键字来假设所有推断为整数的列包含缺失值,并将其转换为浮点数。使用
sample
关键字增加样本的大小。
还应注意的是,如果定宽文件包含包含行终止符的带引号字符串,此功能可能会失败。为了解决这个问题,您可以指定
blocksize=None
以不将文件拆分为多个分区,代价是降低了并行性。