动态重命名Pandas DataFrame列并写入带时间戳的S3 CSV文件
实现步骤与代码示例
1. 安装依赖包
先确保安装所需的Python库:
pip install pandas boto3 s3fs
2. 核心代码实现
import pandas as pd from datetime import datetime # 配置S3基础信息 S3_BUCKET = "你的桶名称" SOURCE_CSV_PATH = "原CSV在S3的路径" # 比如 "raw_data/source.csv" TARGET_ROOT_PATH = "目标根目录路径" # 比如 "processed_data/exports" # 生成当前时间戳(用可读的字符串格式,也可替换为整数时间戳) current_timestamp = datetime.now().strftime("%Y%m%d%H%M%S") # 从S3读取CSV到DataFrame df = pd.read_csv(f"s3://{S3_BUCKET}/{SOURCE_CSV_PATH}") # 动态重命名列(新列名列表需与原CSV列顺序严格一致) new_column_names = ["新列名1", "新列名2", "新列名3"] # 替换为你的实际列名列表 # 校验列名数量匹配 if len(new_column_names) != len(df.columns): raise ValueError("新列名列表长度与原列数不匹配") df.columns = new_column_names # 构造目标S3路径 target_dir = f"{TARGET_ROOT_PATH}/datetime={current_timestamp}" target_file_path = f"s3://{S3_BUCKET}/{target_dir}/export_current_{current_timestamp}.csv" # 将DataFrame写入S3 df.to_csv(target_file_path, index=False) # index=False避免写入默认行索引 print(f"文件已成功写入:{target_file_path}")
关键注意事项
- AWS凭证配置:确保环境已配置AWS访问凭证(可通过
~/.aws/credentials文件、环境变量AWS_ACCESS_KEY_ID/AWS_SECRET_ACCESS_KEY,或依托IAM角色(在EC2/ECS等AWS服务运行时))。 - 列名匹配要求:新列名列表的长度必须和原CSV列数完全一致,否则会触发报错。
- 时间戳自定义:示例用
%Y%m%d%H%M%S格式的时间戳,也可替换为整数时间戳(比如int(datetime.now().timestamp()))。 - S3路径规范:必须遵循
s3://桶名称/文件路径的格式,pandas会自动通过s3fs处理S3交互。
内容的提问来源于stack exchange,提问作者marie20
相关产品推荐
相关产品推荐

