Apply GZIP compression to a CSV in Python Pandas
我正在尝试使用以下内容将数据帧写入python pandas中的gzip压缩包:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | 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=' ') |
这只是创建一个名为'foo-YYYYMMDD.csv.gz'的csv,而不是实际的gzip存档。
我也试过添加这个:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | #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=' ') # Write above variable to gzip with gzip.open('foo-%s.csv.gz' % todaysdatestring, 'wb') as output: output.write(d) |
哪个也失败了。 有任何想法吗?
使用
您可能需要升级pandas,因为gzip直到版本0.17.1才会实现,但尝试在先前版本上使用它不会引发错误,只会生成常规csv。 您可以通过查看
用熊猫很容易完成
1 | import pandas as pd |
将pandas数据帧写入gunzip压缩csv
1 | df.to_csv('dfsavename.csv.gz', compression='gzip') |
从光盘中读取
1 | df = pd.read_csv('dfsavename.csv.gz', compression='gzip') |
从文档
1 2 3 4 | import gzip content ="Lots of content here" with gzip.open('file.txt.gz', 'wb') as f: f.write(content) |
用
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | import gzip content = df.to_csv( sep='|', header=True, index=False, quoting=csv.QUOTE_ALL, quotechar='"', doublequote=True, line_terminator=' ') with gzip.open('foo-%s.csv.gz' % todaysdatestring, 'wb') as f: f.write(content) |
这里的诀窍是
1 2 | with gzip.open('foo-%s.csv.gz' % todaysdatestring, 'wb') as f: f.write(df.to_csv(sep='|', index=False, quoting=csv.QUOTE_ALL)) |