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

Eri*_*sen 7 python csv gzip pandas

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

my_df.to_csv('my_file_name.csv', compression='gzip')
Run Code Online (Sandbox Code Playgroud)

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

my_df.to_csv('my_file_name.csv', mode='a', index=False)
Run Code Online (Sandbox Code Playgroud)

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

my_df.to_csv('my_file_name.csv', mode='a', index=False, compression='gzip')
Run Code Online (Sandbox Code Playgroud)

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


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

我使用的是Python 3.4和Pandas 0.16.1.

pau*_*ip3 1

您可以执行以下操作

import gzip

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

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