我正在尝试使用以下代码将Python Pandas数据框写入gzip压缩的CSV文件:
import pandas as pd
import datetime
import csv
import gzip
# Get data (with previous connection and script variables)
df = pd.read_sql_query(script, conn)
# Create today's date, to append to file
todaysdatestring = str(datetime.datetime.today().strftime('%Y%m%d'))
print todaysdatestring
# Create csv with gzip compression
df.to_csv('foo-%s.csv.gz' % todaysdatestring,
sep='|',
header=True,
index=False,
quoting=csv.QUOTE_ALL,
compression='gzip',
quotechar='"',
doublequote=True,
line_terminator='\n')
这只是创建一个名为'foo-YYYYMMDD.csv.gz'的csv文件,而不是一个实际的gzip归档文件。
我也尝试过添加以下内容:
#Turn to_csv statement into a variable
d = df.to_csv('foo-%s.csv.gz' % todaysdatestring,
sep='|',
header=True,
index=False,
quoting=csv.QUOTE_ALL,
compression='gzip',
quotechar='"',
doublequote=True,
line_terminator='\n')
# Write above variable to gzip
with gzip.open('foo-%s.csv.gz' % todaysdatestring, 'wb') as output:
output.write(d)
还是不起作用。 有任何想法吗?
compression='gzip'
参数调用df.to_csv
函数可以为我生成一个gzip档案。我使用了与您相同的关键字参数。您使用的是哪个版本的pandas?请查看pd.__version__
的输出来确定这一点。似乎gzip功能是在0.17.1版本中实现的,但是在早期版本中尝试使用它不会产生错误。 - rooteasy_install --upgrade pandas
并将其从16.1升级到18.1,从而使顶部部分的“#创建带有gzip压缩的csv”代码按预期工作。 我应该编辑 / 删除主帖以反映这一点吗? - user2752159