Как объединить несколько фреймов данных в pyspark в блокноте Databricks - PullRequest
0 голосов
/ 31 января 2020

Пока что то, что я обнаружил на SO или аффилированных сайтах, не работает изящно или не работает с моим тестированием на Databricks, может быть, я не видел его здесь.

Здесь снова возникает необходимость:

У меня есть Avg_ Open _By_Year, Avg_ High _By_Year, Avg_ Low _By_Year и Avg_ Close _By_Year, у всех есть общий столбец ' Год '.

Поэтому я хочу объединить эти три вместе, чтобы получить окончательный df вроде: Year, Open, High, Low, Close

В данный момент я должен использовать уродливый способ присоединиться к ним в столбце «Год»:

finalDF = Avg_Open_By_Year.join(Avg_High_By_Year, on=['Year'], how='left_outer').join(Avg_Low_By_Year, on=['Year'], how='left_outer').join(Avg_Close_By_Year, on=['Year'], how='left_outer')

Я думаю, что должен быть благодатный способ выполнить sh, как UnionAll в SQL.

Там здесь возможное решение https://datascience.stackexchange.com/questions/11356/merging-multiple-data-frames-row-wise-in-pyspark/11361#11361, выбранный ответ описан ниже:

from functools import reduce  # For Python 3.x
from pyspark.sql import DataFrame

def unionAll(*dfs):
    return reduce(DataFrame.unionAll, dfs)

unionAll(td2, td3, td4, td5, td6, td7, td8, td9, td10)

Однако, я делаю это в записной книжке Databricks, выдает ошибку:

NameError: имя 'functools' не определено

enter image description here

Было бы очень полезно, если бы некоторые можно пролить на меня больше света. Большое спасибо.

1 Ответ

0 голосов
/ 31 января 2020

Как уже упоминалось в комментариях @Mohamed, вы должны импортировать functools, чтобы использовать его.

import functools
...