连接具有相同分区数但具有不同列数的两个数据帧(黄昏)

时间:2019-02-24 17:57:42

标签: python pandas dataframe dask

我有两个具有相同数量分区的数据帧。我想将这些数据帧连接起来(第一个分区与第一个分区,第二个分区与第二个分区,依此类推),因此,最终的数据帧具有初始的分区数(V),相同的数目每个分区(n)中的行数,但列数不同(数据帧1和数据帧2 (n+m)的列数之和)。第一个数据帧(A)具有时间戳记作为索引,但是第二个数据帧(B)没有此列。这两个数据帧均已排序,我只需要将这些数据集放在一起,而无需在每个分区中进行任何更改。另外,A的索引将是新数据帧的索引。

A: data-frame (V partitions) - every partition (nXn)
B: data-frame (V partitions) - every partition (nXm)

C (new data-frame): (V partitions) - every partition (nX(n+m))

1 个答案:

答案 0 :(得分:1)

这不太难:

C = dd.from_delayed([dask.delayed(pd.concat)([a, b])
    for a, b in zip(A.to_delayed(), B.to_delayed())],
    meta=A._meta)

解释

  • 将每个数据帧的分区作为延迟对象
  • 将这些对传递给concat
  • 将级联对重新组合成数据框
  • 重复使用meta,因为输出的列和索引与输入的列相同

(C当然仍然很懒,仅当您对其执行操作时才会触发该操作)