从 dict_values 创建一个 pyspark 数据框

Posted

技术标签:

【中文标题】从 dict_values 创建一个 pyspark 数据框【英文标题】:Create a pyspark dataframe from dict_values 【发布时间】:2017-10-10 12:00:14 【问题描述】:

我正在尝试从 dict_values 生成一个 pyspark 数据帧。我可以使用 pandas concate 函数来实现相同的目的。和字典由作为年份的键和作为 pyspark 数据框的值组成。

这是我正在使用的代码,我有一种替代方法来合并所有数据框,我认为这不是实现它的更好方法。

dict_ym = 
for yearmonth in keys:    
    key_name = 'df_'+str(yearmonth)
    dict_ym[key_name]= df
    # Add a new column to dataframe
    # Perform some more transformation

dict_ym 

# Now above dict has key as yearmonth for eg. 201501 and value as dataframe consit of 10 columns

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

df2 = union_all_dataframes(dict_ym['df_201501'],dict_ym['df_201502'] ... so on till dict_ym['df_201709'])

但在 pandas 数据帧中,我可以做这样的事情,它将使用下面的代码集将下面的所有数据帧附加到其他数据帧:

 df2 = pd.concat(dict_ym.values()) # here dict_ym has pandas dataframe in case of spark df

我认为创建与pandas.concat 类似的pyspark 数据框会更优雅。

【问题讨论】:

【参考方案1】:

试试这个,

df2 = union_all_dataframes(*dict_ym.values())

【讨论】:

以上是关于从 dict_values 创建一个 pyspark 数据框的主要内容,如果未能解决你的问题,请参考以下文章

在遍历 dict_values 或列表中的数据帧时访问下一个 df ("v+1")

AttributeError: 'dict_values' object has no attribute 'translate'

Python:如何将字典中的值提取到列表中->当前在结果中获取 dict_values() [重复]

TypeError: can't pickle dict_values objects

'dict_values' object does not support indexing, Python字典dict中由value查key

如何更改pyspark中的列元数据?