是否有人可以提供如何使用Python / Pandas包从csv文件创建zip文件的示例? 谢谢
答案 0 :(得分:12)
使用
df.to_csv('my_file.gz', compression='gzip')
来自文档:
压缩:字符串,可选 表示要在输出文件中使用的压缩的字符串,允许的值为'gzip','bz2','xz',仅在第一个时使用 参数是文件名
请参阅有关zip
文件here的支持的讨论。
答案 1 :(得分:10)
在熊猫的to_csv()
方法中,除了压缩类型(gz
,zip
等)外,您还可以指定存档文件名-只需将带有必要参数的字典传递为{ {1}}参数:
compression
在上面的示例中,compression_opts = dict(method='zip',
archive_name='out.csv')
df.to_csv('out.zip', compression=compression_opts)
方法的第一个参数定义[ZIP]存档文件的名称,字典的to_csv
键定义[ZIP]压缩类型,而{{字典的1}}键定义存档文件中[CSV]文件的名称。
结果:
method
中的详细信息
答案 2 :(得分:0)
为响应Stefan的回答,请为zip csv文件添加“ .csv.gz”
df.to_csv('my_file.csv.gz', compression='gzip')
希望有帮助
答案 3 :(得分:0)
Pandas to_csv 压缩存在一些安全漏洞,它会在 Linux 机器上的 zip 存档中留下文件的绝对路径。更不用说人们可能希望将文件保存在压缩文件的最高级别。以下函数通过使用 zipfile 解决了这个问题。最重要的是,它不受 pickle 协议更改(4 到 5)的影响。
from pathlib import Path
import zipfile
def save_compressed_df(df, dirPath, fileName):
"""Save a Pandas dataframe as a zipped .csv file.
Parameters
----------
df : pandas.core.frame.DataFrame
Input dataframe.
dirPath : str or pathlib.PosixPath
Parent directory of the zipped file.
fileName : str
File name without extension.
"""
dirPath = Path(dirPath)
path_zip = dirPath / f'{fileName}.csv.zip'
txt = df.to_csv(index=False)
with zipfile.ZipFile(path_zip, 'w', zipfile.ZIP_DEFLATED) as zf:
zf.writestr(f'{fileName}.csv', txt)