如何在Python数据框中分块读取数据?

5
我想将文件 f 分块读入数据框中。这是我使用的一部分代码。请看下面:
for i in range(0, maxline, chunksize):
df = pandas.read_csv(f,sep=',', nrows=chunksize, skiprows=i)
df.to_sql(member, engine, if_exists='append',index= False, index_label=None, chunksize=chunksize)

我遇到了以下错误:

pandas.io.common.EmptyDataError: 无法从文件中解析任何列

只有当chunksize>=maxline(即文件f中的总行数)时,代码才能正常运行。然而,在我的情况下,chunksize<= maxline。

请建议应该如何修复。
1个回答

5

我认为在使用read_csv时最好使用参数chunksize。此外,在使用concat时应该使用参数ignore_index,以避免index中出现重复:

chunksize = 5
TextFileReader = pd.read_csv(f, chunksize=chunksize)

df = pd.concat(TextFileReader, ignore_index=True)

请查看pandas文档


谢谢!现在我已经得到df作为TextFileReader。我代码的下一步需要把df转换成dataframe。如何将TextFileReader转换为dataframe呢? - Geet
我的实际数据约为85GB。连接操作会使数据框变得很大吗?我想使用chunksize以块的形式读取和写入数据。请给予建议。 - Geet
1
是的,这将会非常庞大。也许你可以查看这个问题:https://dev59.com/cmYq5IYBdhLWcg3wtCzO。 - jezrael
对于像我这样的新手来说,那看起来非常困难。实际上,“df = pandas.read_csv(f,sep =',',nrows = chunksize,skiprows = i)”会给出数据框。难道不能修改它来解决我的问题吗?已更新问题。谢谢! - Geet
我之前使用过你的解决方案,但是我遇到了同样的错误。不幸的是,我从未使用过 to_sql,所以无法帮助你解决它。 - jezrael

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