首页 > 解决方案 > Dask - 将时间戳列转换为日期并设置为索引终止进程

问题描述

我是 Dask 的新手,

我有 152 个镶木地板文件,平均 200MB。(32GB 机器 RAM)

每个文件都有时间戳列,我想将该列设置为分区(索引)。

如果我将 Timestamp 列设置为索引,则分区太多,所以我需要将其转换为 Date -->

ddf = dd.read_parquet('gs://bucket_name/*.parquet')
ddf['partition'] = dd.to_datetime(ddf['event_time'], format='%Y/%m/%d')

我成功地运行了其他操作,如 groupby 等。

如果我想要带有分区的镶木地板文件以按分区快速查询,那么处理这种情况的最佳做法是什么?

标签: daskdask-dataframe

解决方案


这个答案会很有用。具体来说,您希望将时间戳列设置为具有特定频率的索引。

# note that specifying npartitions is optional, but
# can be useful if for some reason there are too
# many partitions
ddf = ddf.set_index('partition', npartitions=10)

# you can also repartition it to get the desired frequency
# (e.g. daily)
ddf = ddf.repartition(freq='1D')

请注意,如果您的数据已按日期时间排序,则可以使此过程更加高效,请参阅上面链接的答案中的详细信息。


推荐阅读