我是新来的火花。我有一个火花数据帧:
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]
答案 0 :(得分:1)
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']
>>>