Объединить два кадра данных (dask) с одинаковым количеством разделов, но с разным количеством столбцов - PullRequest
0 голосов
/ 24 февраля 2019

У меня есть два фрейма данных с одинаковым количеством разделов.Я хочу объединить эти фреймы данных (первый раздел с первым разделом, второй - со вторым и т. Д.). Таким образом, последний фрейм данных имеет начальное количество разделов (V), то же количество строк.в каждом разделе (n), но разное количество столбцов (сумма количества столбцов первого кадра данных и второго кадра данных (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 голосов
/ 24 февраля 2019

Это не так уж сложно:

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
  • формирует объединенные пары обратно в фрейм данных
  • многократного использования мета, поскольку выходные данные имеют те же столбцы и индекс, что и входные данные

(CКонечно, все еще ленив, операция будет запущена только тогда, когда вы что-то с ней делаете)

...