如何解决将文本文件读入 Dask DataFrame
我希望在大约 100,000 个文本文件上训练模型。 Pandas 遇到了一些内存问题,决定迁移到 dask。
我正在尝试将文件读入已存储文件路径的 dask DataFrame。在熊猫中,我可以简单地执行以下操作:
ddf['rawtext'] = [open(file,'rt').read() for file in ddf['filepath']]
但这会产生 NotImplementedError
错误。
解决方法
您可以在 Pandas 中使用 map
或 map_partitions
在 Dask 中执行的操作
def read_them(df):
df['rawtext'] = [open(file,'rt').read() for file in ddf['filepath']]
return df
ddf2 = ddf.map_partitions(read_them)
或
ddf2 = ddf.assign(
raw_text=ddf.filepath.map(lambda x: open(x,'rt').read())
)
第一个选项可能是更多的字符,但感觉更简单,更接近你的原始代码。 无论您接下来想对文本进行什么(逐行)处理,您仍然可以在同一函数中进行。
,在 Pandas 中,您只需要提供单个文件的路径,它就会为您处理 I/O
操作,不需要打开每个文件并将其传递给列表。
dask 与许多其他大型框架一样,可以接受对象目录并一次性读取它们。
来自docs。
!ls data/*.csv | head
data/2000-01-01.csv
data/2000-01-02.csv
data/2000-01-03.csv
data/2000-01-04.csv
data/2000-01-05.csv
data/2000-01-06.csv
data/2000-01-07.csv
data/2000-01-08.csv
data/2000-01-09.csv
data/2000-01-10.csv
dd.read_csv('data/2000-*-*.csv')
在你的情况下,我认为它是
dd.read_csv('data/*.txt')
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。