Notez que j'étais un peu accro en essayant de gzip le Pandas DataFrame et de l'enregistrer en tant que fichier CSV dans un compartiment Amazon S3.
import gzip
from io import BytesIO
import pandas as pd
import boto3
def save_to_s3(df: pd.DataFrame, bucket: str, key: str):
"""Pandas DataFrame.csv.Enregistrer sur Amazon S3 en tant que gz"""
buf = BytesIO()
with gzip.open(buf, mode="wt") as f:
df.to_csv(f)
s3 = boto3.client("s3")
s3.put_object(Bucket=bucket, Key=key, Body=buf.getvalue())
Les points sont les suivants.
--Entrez BytesIO () car le premier argument de gzip.open est un objet de type fichier qui représente le format gzip.
pandas.DataFrame.to_csv est une chaîne de caractères, mode de gzip.open spécifie" write text (wt)".Au début, je pensais que si je spécifiais compression =" gzip " dans pandas.DataFrame.to_csv, je n'aurais pas à le compresser explicitement, mais si je saisissais un objet semblable à un fichier dans to_csv, L'option compression semble être ignorée et ne peut pas être utilisée.
Recommended Posts