如何以日期时间索引更快地连接dask数据帧?

时间:2019-01-24 09:53:01

标签: python pandas dask

垂直连接两个时间戳索引的dask Dataframe时,我有一个与this类似的问题。

我有两个dask数据帧df1,df2:

df1.index:

Dask Index Structure:

npartitions=1

2018-03-03 13:04:44.497929    datetime64[ns]

2018-03-03 13:23:04.759840               ...

Name: time, dtype: datetime64[ns]

Dask Name: getitem, 8 tasks

df2.index:

Dask Index Structure:

npartitions=1

2018-03-03 07:09:04.184453    datetime64[ns]

2018-03-03 07:32:46.815356               ...

Name: time, dtype: datetime64[ns]

Dask Name: getitem, 8 tasks

它们具有完全相同的列名和类型。现在我想使用dask.dataframe.concat来连接它们:

#df1 & df2 are dask dataframes

print(df1.divisions)

print(df2.divisions)

dfs=dd.concat([df1,df2],axis=0,interleave_partitions=False)

输出:

(Timestamp('2018-03-03 13:04:44.497929'),Timestamp('2018-03-03 13:23:04.759840')) (时间戳('2018-03-03 07:09:04.184453'),时间戳('2018-03-03 07:32:46.815356')) ValueError:所有输入都有已知的划分,不能按顺序连接。指定interleave_partitions = True忽略顺序


除非指定interleave_partitions = True,否则两个ddf不能串联。但是两个数据帧的索引之间没有交错。这是由于dask中支持datetimeindex的限制引起的吗?还是我需要指定其他参数或将索引转换为int或double?

1 个答案:

答案 0 :(得分:1)

  

但是两个数据帧的索引之间没有交织

Dask在这里似乎与您不同意。似乎认为两个数据帧的索引范围确实有些重叠。可以,您可以按要求添加关键字,然后一切正常。

dfs=dd.concat([df1,df2],axis=0,interleave_partitions=True)

如果您认为自己在这里遇到了错误,那么我建议您将其简化为最小的示例并发布错误报告。