Python Dask和字段名中的多个合并

Python Dask和字段名中的多个合并,python,pandas,dask,Python,Pandas,Dask,我正在尝试将多个pandas数据帧合并到一个带有字段[“a_id”、“b_id”、“c_id”]的大型Dask数据帧上。每个熊猫数据帧“A”、“B”和“C”都有一个唯一的字段(“A_id”、“B_id”和“C_id”),将其连接到Dask数据帧。“B”和“C”还有一个字段“B_Field1”: 此操作失败,表示ddf中没有字段“b_Field1”。我的想法是,我需要在合并B和C之间执行一个.compute()命令,但这会导致Dask无休止地挂起,进度条上有40%的数据(最终由于内存错误而消失)

我正在尝试将多个pandas数据帧合并到一个带有字段[“a_id”、“b_id”、“c_id”]的大型Dask数据帧上。每个熊猫数据帧“A”、“B”和“C”都有一个唯一的字段(“A_id”、“B_id”和“C_id”),将其连接到Dask数据帧。“B”和“C”还有一个字段“B_Field1”:

此操作失败,表示ddf中没有字段“b_Field1”。我的想法是,我需要在合并B和C之间执行一个.compute()命令,但这会导致Dask无休止地挂起,进度条上有40%的数据(最终由于内存错误而消失)


在进行第二次联接之前是否需要进行计算?如果是这样的话,有什么原因会让它挂起来?这些数据集仅仅小到足以合并成纯熊猫,合并发生得很快,但我正试图使其可部署在RAM较少的机器上。

如果在最后一行之前检查数据帧,您会发现它有以下列:

a_id  b_id  c_id  a_Field1_x  b_Field1_x  c_Field1  a_Field1_y  b_Field1_y
i、 例如,
b_Field1
已经一分为二,事实证明这两者是相同的。这可能是达斯克的一个错误,因为正如你所展示的,熊猫身上不会发生同样的情况。但是,设置适当的索引或将可选参数调整为
merge
可能是一种解决方法

使用数据帧,您可以

ddf = ddf.merge(dC.rename(columns={'b_Field1': 'b_Field1_x'}), 
     how="left", on=["c_id", "b_Field1_x"])
现在,您还可以获得重复的
c


关于一般的记忆问题,其他地方对此进行了详细的讨论。请务必仔细选择分区大小、索引和工作区数。

每次都要覆盖
ddf
。哎呀,为了简单起见,我更改了变量名,但遗漏了一些。编辑以反映。嗨,triphook,你介意提供一个编辑以提供一个工作示例吗
ddf = ddf.merge(dC.rename(columns={'b_Field1': 'b_Field1_x'}), 
     how="left", on=["c_id", "b_Field1_x"])