到目前为止,我从SO或联属网站发现的内容无法正常运行,或者无法在Databricks上进行我的测试,也许我在这里没有看到它。
这又是需要:
我有Avg_ 打开 _By_Year,Avg_ 高 _By_Year,Avg_ 低 _By_Year和Avg_ 关闭 _By_Year,它们都有一个共同的' 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')
我认为应该有一个优雅的方法来完成此任务,例如SQL中的UnionAll。
这里有一种可能的解决方案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”未定义
如果有人能给我更多的光芒,我将不胜感激。非常感谢你。
如@Mohamed的评论中所述,您必须导入functools才能使用它。
import functools