联合存储在一个嵌套字典中的所有数据帧- Pyspark



我有一个字典,基本上看起来像:

dct = {'a':{'df':dfa, 'group':1, 'att':col1},
'b': {'df':dfb, 'group':2, 'att':col2},
'c': {'df':dfc, 'group':3, 'att':col3},
}

我的字典要长得多,这就是为什么我希望以一种比现在更有效的方式联合所有的数据帧:

df = dct['a']['df'].union(dct['b']['df']).union(dct['c']['df'])....etc.

try this:

from functools import reduce
from pyspark.sql import DataFrame
output = reduce(DataFrame.unionAll, [dct[key]['df'] for key in dct.keys()])

您可以使用union()或unionByName(),如果指定allowMissingColumns=True,它具有将数据帧与不同列组合在一起的优点。如果您不想在字典中保留重复的数据帧,您可能还需要在末尾添加distinct():

df = dct['a']['df']
for k in list(dct.keys())[1:]:
df = df.unionByName(dct[k]['df'], allowMissingColumns=True)
df = df.distinct()

相关内容

  • 没有找到相关文章

最新更新