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