2017-08-01 1 views
0

Je suis nouveau à étinceler. J'ai une trame de données d'allumage:Obtenir des clés uniques à partir d'une base de données

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))] 

Je suis en train d'obtenir tous les noms de fonctions dans une liste

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

J'ai essayé:

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

Cela me donne toutes les clés, des paires de valeurs .

ie. Comment puis-je obtenir des caractéristiques distinctes en tant que liste après l'étape ci-dessus ou existe-t-il une autre solution élégante?

[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)] 

i.e.

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

Répondre

1

Rdd_name.keys() est ce que vous avez besoin si vous travaillez avec un RDD.

Comme expliqué le documentation, df.columns est ce dont vous avez besoin pour obtenir la liste des colonnes dans une base de données Spark.

Vous pouvez également accéder aux clés en convertissant une ligne au dictionnaire comme suit:

>>> 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

Il dit: AttributeError: « liste » objet n'a pas d'attribut "colonnes de – SpaceOddity

+0

@SpaceOddity parce que quelque part dans votre code converti votre dataframe à une liste .. l'échantillon 'df' est une liste. Vérifiez ma réponse mise à jour pour un autre moyen d'accéder aux clés de votre liste. – MedAli