python - 使用 gzip 压缩将 pandas df 保存到类似文件的对象中
问题描述
我正在尝试将 pandas DF 保存到内存中json_buffer
,并使用以下代码将文件加载到 S3:
json_buffer = StringIO()
df.to_json(json_buffer, orient='records', date_format='iso', compression='gzip')
json_file_name = file_to_load.split(".")[0] + ".json"
s3_conn.put_object(Body=json_buffer.getvalue(), Bucket=s3_bucket, Key=f"{target_path}{json_file_name}")
当我尝试应用压缩时,出现此错误:
RuntimeWarning: compression has no effect when passing a non-binary object as input.\
如何仍然应用压缩并将 JSON 文件保存到具有 .gz 压缩的 S3?
谢谢!
解决方案
让它工作,我将分享我如何使用BytesIO
和gzip
:
json_buffer = BytesIO()
with gzip.GzipFile(mode='w', fileobj=json_buffer) as gz_file:
df.to_json(gz_file, orient='records', date_format='iso')
json_file_name = file_to_load.split(".")[0] + ".json.gz"
s3_conn.put_object(Body=json_buffer.getvalue(), Bucket=s3_bucket, Key=f"{target_path}{json_file_name}")
推荐阅读
- windows - 如何以独家全屏模式打开 Chrome/Win10,而不是屏幕大小的无边框窗口?
- flutter - 将json解析成flutter List
到地图 - css - 未设置 headerfilter 时制表符垂直对齐标题
- python - 使用多个 buildpack 在 Heroku 上部署 Haskell + Python
- java - 在没有 JRE 的情况下安装 tabula-py
- python - 无法通过 Telethone 在 Megagroup 中发送消息
- amazon-web-services - 为什么 AWS Route 53 不发布我的 DNS 记录?
- c# - 在 .Net Core 中为 WEB API 控制器定义不同的(不同于全局的)CORS 策略
- sql - 在 SQL 计算中使用两个列别名
- ceph - 如何修复重启后挂起的 ceph 命令?