指定将Pandas数据帧上载到S3时要使用的AWS配置文件名称

时间:2018-01-28 12:11:11

标签: python-3.x amazon-s3 boto3 s3fs

我想通过指定s3 url将Panda的数据框直接上传到S3。我有一个publisher,我想指定用于此次上传的个人资料的名称。

multi-profile AWS environment以来,我想知道是否还有其他方法可以在代码中指定(非默认)区域。

我无法在it is not possible to specify region in the s3 url库中提交任何此类选项,import pandas as pd data = [1, 2, 3] df = pd.DataFrame() # I would like to specify non-default profile to use here s3_url = 's3://my_bucket/path/to/file.parquet' df.to_parquet(s3_url) 在内部使用该库来上传到s3。

请注意,我不想使用环境变量,也不想修改AWS凭证文件中的默认配置。

pd.read_csv(..., comment='#',...)? Sample code is below.

# Read the raw file as-is: df1
df1 = pd.read_csv(file_messy)

# Print the output of df1.head()
print(df1.head(5))

# Read in the file with the correct parameters: df2
df2 = pd.read_csv(file_messy, delimiter=' ', header=3, comment='#')

# Print the output of df2.head()
print(df2.head())

# Save the cleaned up DataFrame to a CSV file without the index
df2.to_csv(file_clean, index=False)

2 个答案:

答案 0 :(得分:0)

使用session

    session = boto3.Session(profile_name='dev')
    s3_client = session.client('s3')

Save DataFrame到镶木地板文件

    df.to_parquet( parquet_pandas_file )

Upload文件到S3

    with open( parquet_pandas_file, 'rb' ) as s3_source_data:
        s3.upload_fileobj(data, 'bucket_name', 'bucket_key_name' )

答案 1 :(得分:0)

使用s3fs命令时,使用以下代码设置配置文件名称

fs = s3fs.S3FileSystem(profile_name='<profile name>')
with fs.open('s3://bucketname/root1/file.csv', 'w') as f:
    df.to_csv(f)