从数据框中获取唯一密钥

问题描述:

我是新来的火花。我有一个火花数据帧:从数据框中获取唯一密钥

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] 

Rdd_name.keys()是你所需要的,如果您正在使用RDD工作。

如解释documentationdf.columns是您需要获取Spark数据框中列的列表。

>>> 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'] 
>>> 
+0

它说:AttributeError的:“名单”对象有没有属性“列” – SpaceOddity

+0

@SpaceOddity因为地方在你的代码转换

您也可以通过转换行到字典中按如下方式访问键你的数据框到一个列表中。样本'df'是一个列表。查看我更新的答案,以获取从列表中访问密钥的另一种方式。 – MedAli