从数据框中获取唯一键

时间:2017-08-01 05:59:27

标签: python pyspark databricks

我是新来的火花。我有一个火花数据帧:

print(df)
[Row(feature=Row(a=u'enabled', b=None, c=None, d=u'enabled', e=None, f=None)),
     Row(feature=Row(a=None, b=None, c=None, d=u'enabled', e=None, f=None))]

我想在列表中获取所有功能名称

experiments = [a, b, c, d, e]

我试过了:

a = df.rdd.map(lambda r: r.feature).collect()

这给了我所有关键值对。

[Row(a=u'enabled', b=None, c=None, d=u'enabled', e=None, f=None), Row(a=None, b=None, c=None, d=u'enabled', e=None, f=None)]

如何在上述步骤之后获得列表中的不同功能,还是有其他优雅的解决方案?

final_list = [a, b, c, d, e, f]

1 个答案:

答案 0 :(得分:1)

如果您正在使用RDD,那么

Rdd_name.keys()就是您所需要的。

正如documentation所解释的那样,df.columns是获取Spark数据帧中列的列表所需的内容。

您还可以通过将Row转换为字典来访问密钥,如下所示:

>>> df 
[Row(feature=Row(a=u'enabled', b=None, c=None, d=u'enabled', e=None, f=None)), Row(feature=Row(a=None, b=None, c=None, d=u'enabled', e=None, f=None))]
>>> df[0]
Row(feature=Row(a=u'enabled', b=None, c=None, d=u'enabled', e=None, f=None))
>>> df[0].asDict()
{'feature': Row(a=u'enabled', b=None, c=None, d=u'enabled', e=None, f=None)}
>>> df[0].asDict(True)
{'feature': {'a': u'enabled', 'c': None, 'b': None, 'e': None, 'd': u'enabled', 'f': None}}
>>> df[0].asDict(True).keys() 
['feature']
>>> df[0].feature.asDict(True).keys() 
['a', 'c', 'b', 'e', 'd', 'f']
>>>