我可以使用pandas附加到压缩流吗?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了我可以使用pandas附加到压缩流吗?相关的知识,希望对你有一定的参考价值。

我知道通过将compression='gzip'参数传递给pd.read_csv(),我可以将DataFrame保存到压缩的CSV文件中。

my_df.to_csv('my_file_name.csv', compression='gzip')

我也知道,如果我想将DataFrame附加到现有CSV文件的末尾,我可以使用mode='a',就像这样

my_df.to_csv('my_file_name.csv', mode='a', index=False)

但是,如果我想将DataFrame附加到压缩CSV文件的末尾怎么办?这甚至可能吗?我试着这样做

my_df.to_csv('my_file_name.csv', mode='a', index=False, compression='gzip')

但是生成的CSV没有被压缩,尽管条件很好。


这个问题是由我处理带有Pandas的大型CSV文件引起的。我需要生成压缩的CSV输出,并将块文件中的CSV文件处理成DataFrame,这样我就不会遇到MemoryError。因此,对我来说,最看似合乎逻辑的事情是将每个输出DataFrame块一起附加到一个压缩的zip文件中。

我使用的是Python 3.4和Pandas 0.16.1。

答案

您可以执行以下操作

import gzip

with gzip.open('my_file_name.csv.gz', 'a') as compressed_file:
    df.to_csv(compressed_file, index=False)

因为pandas .to_csv方法接受路径或类文件对象。

以上是关于我可以使用pandas附加到压缩流吗?的主要内容,如果未能解决你的问题,请参考以下文章

片段 MyFragment 未附加到 Activity

片段未附加到上下文 - 延迟的 UI 更改

可以python子进程Popen接受多个stdin流吗?

使用 python panda 模块附加到 sql 表

将提取的列附加到没有索引的列表中:Pandas

如何使用 pandas 将新的数据帧行附加到 csv?