我有一个简单的数据框,我想保存到s3。数据框中的每一行都作为“时间戳”列。我想基于该时间戳列中的日期对s3中的路径进行分区,因此s3中的输出如下所示:
s3://....BUCKET_NAME/data/date=2019-01-01/part1.json.gz
s3://....BUCKET_NAME/data/date=2019-01-01/part2.json.gz
...
...
s3://....BUCKET_NAME/data/date=2019-05-01/part1.json.gz
这有可能在黄昏吗?我只能在期望整数作为输入的输出中找到name_function,并且将该列设置为索引不会将索引添加为输出文件名的一部分。
答案 0 :(得分:0)
不确定这是唯一的还是最佳的方法,但是您应该可以使用groupby-apply来做到这一点,如:
df.groupby('timestamp').apply(write_partition)
其中write_partition
是一个函数,该函数将单个时间戳记作为熊猫数据帧并将其写入S3。确保检查apply的文档,因为有些陷阱(提供meta
,如果groupby列不在索引中,则进行完全改组,每个分区组对调用一次函数,而不是每个组调用一次)。
答案 1 :(得分:0)
只要您愿意使用partition_on
将其保存为实木复合地板,实际上就很容易实现。如果您想阅读的话,应该将文件夹从data
重命名为data.parquet
。
df.to_parquet("s3://BUCKET_NAME/data.parquet/", partition_on=["timestamp"])