2017-08-01 11 views
0

私はスパークするのが初めてです。データフレームから一意のキーを取得

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

これは私のすべてのキーと値のペアを与える:私は、私が試してみました

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

リスト内のすべての機能名を取得しようとしています

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

:私は、スパークのデータフレームを持っています。

ie。

[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

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

関連する問題