2017-10-14 9 views
1

私はpandasデータフレームオブジェクトとして保存されたファイルの辞書を持っていますが、forループを通して各ファイルにアクセスしています。私がしようとしているのは、これらのそれぞれをリストに抽出してから、リストのリスト全体を取ることです。ここでは、コードと私の苦境がある:pandasオブジェクトをリストのリストに抽出してユニークな値を抽出します

country_setter = [] 
     for file in files_list: 
     country_setter.append(all_comps[file]['Country'].tolist()) 

    uni_country_setter = ? 

結果の出力は、親リストの中にリストを取って、各パンダのDF [「国」]列で、リストのリストです。

[['France', 
    'United States', 
    'Poland', 
    'Poland', 
    'Poland', 
    'Poland', 
    'Hungary', 
    'Poland', 
    'France', 
    'United Kingdom', 
    .... 
    'Namibia', 
    'China', 
    'China', 
    'Ireland'], 
['Netherlands', 
    'Canada', 
    'United States', 
    'Canada', 
    'Canada', 
    'United States', 
    'Sweden', 
    'Sweden', 
    'United Kingdom', 
    .... 
    'Ireland', 
    'Netherlands', 
    'Netherlands', 
    'France', 
    'Hong Kong', 
    'France', 
    'France', 
    'United States', 
    'France', 
    'United States']] 

リストには40個のリストがあります。私はセット(country_setter [0])を取ることができ、それは私に最初のリストのユニークな値を得るのにうまく動作しますが、すべてのユニークな値を知る必要があります。ファイルを連動させます。

あなたのお役に立てれば教えてください。私はstackoverflowを徹底的に見てきましたが、わずかに似た質問が1つしか見つかりませんでしたが、目標は固有の抽出でリスト構造を維持し、itertoolsを使用することでした。ここではすべてのリストに一意の値が必要です。

ありがとうございます!

+0

あなたが追加することができますデータサンプル? – jezrael

+0

確かに、私は構造を与えます。 – fattmagan

+0

@jezraelはそれを助けますか? – fattmagan

答えて

1

私はあなたがリストを平らにしてからsetでユニークなリストを作成する必要があると思う:

uni_country_setter = list(set([item for sublist in country_setter for item in sublist])) 

はEDIT:

最初のループは、必要ありません使用可能性である:

uni_country_setter = list(set([item for file in files_list 
           for item in all_comps[file]['Country'].tolist()])) 
+0

ありがとうございます!私は自分でそれを分かったとは思えません。あなたはその二重の "for"コールの背後にある論理を説明できますか?各サブリストを定義してから、それを反復処理していますか? – fattmagan

+0

フラットニングのためのよりよい説明がここにあります(https://stackoverflow.com/questions/952914/making-a-flat-list-out-of-list-of-lists-in-python)。 – jezrael

関連する問題