Dask 两个连续的连接导致 CancelledError

Dask two conesquent concats result in a CancelledError

在数据帧上使用 concat 两次后出现意外行为,如下所示:

import dask.dataframe as dd
import pandas as pd

ddf1 = dd.from_pandas(pd.DataFrame({'A': range(10), 'B': [1,3,5,7,9,11,13,15,17,19]}), npartitions=4)
ddf2 = dd.from_pandas(pd.DataFrame({'A': range(10), 'B': range(10)}), npartitions=4)
ddf3 = dd.from_pandas(pd.DataFrame({'A': range(10), 'B': range(10)}), npartitions=4)

cc1 = dd.concat([ddf1, ddf2], interleave_partitions=True)
cc1.compute()  
# all is fine!

cc2 = dd.concat([cc1, ddf3], interleave_partitions=True)
cc2.compute() 
# KeyError: 'Cannot get left slice bound for non-unique label: 0'
# CancelledError : ('concat-indexed-8c92ebf8ac1bab2c09ee51c1da6ef22d', 0)

我是不是做错了什么或者这是一个必须报告的错误?

问题在于合并后索引丢失了。解决方案是在第二次concat之前set_index

一个有用的提示在