Python 从数据帧获取唯一密钥
我是新手。我有一个spark数据框:Python 从数据帧获取唯一密钥,python,pyspark,databricks,Python,Pyspark,Databricks,我是新手。我有一个spark数据框: 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
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()
这给了我所有的键和值对
即
在完成上述步骤后,我如何获得列表中的不同功能,或者是否有其他优雅的解决方案
i、 e
Rdd\u name.keys()
是使用Rdd时所需的
如前所述,df.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']
>>>
它说:AttributeError:'list'对象没有属性'columns'@SpaceOddity,因为在代码中的某个地方,您将数据帧转换为列表。。示例
df
是一个列表。查看我的更新答案,了解访问列表中的密钥的其他方法。
final_list = [a, b, c, d, e, f]
>>> 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']
>>>