如何基于dask数据框列写入文件名?

时间:2019-07-15 18:35:24

标签: amazon-s3 dask

我有一个简单的数据框,我想保存到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,并且将该列设置为索引不会将索引添加为输出文件名的一部分。

2 个答案:

答案 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"])