2016-05-10 9 views
1

大きなpandasデータフレームテーブルを1Dのpythonリストに変換し、必要に応じてこのリストの重複する要素を削除します。しかし、リストに変換した後、いくつかの要素の繰り返しには、最初に余分なスペースがあり、そのために私の「重複を取り除く」行は効率的ではなく、これらを2つの異なる要素とみなしました。また、番号(nan)でない要素をリストから削除するにはどうすればよいですか? サンプル入力:pandasデータフレームをPythonの1Dリストに変換するときに余分なスペースが発生する

 E1  E2  E3 
0  A  B  NaN 
1  A  C  NaN 
2  A  B  C 
... 
300  X  B  C 

これは私はそれを実行するために使用されるコードレットである:

['A','B','C',....,'X'] 
( '緑色' は上記の表を含むデータフレーム

MCS2=green.values.tolist() 
MCS2=list(set(sum(MCS2,[]))) 
print(MCS2) 

期待出力されます

しかし、何らかの理由でAの中に余分なスペースがあり、AとAのように表示され、同じでも2つの異なる要素としてカウントされます。これは私のouですTPUT:

['A',' A','B','C',' C'....,'X'] 

答えて

2

その後、str.stripwhitespaces,drop_duplicatesと最後の変換toliststackを使用することができます。

print pd.DataFrame({'E1': {0: 'A ', 1: ' A', 2: 'A', 300: 'X'}, 
        'E3': {0: np.nan, 1: np.nan, 2: 'C', 300: 'C'}, 
        'E2': {0: 'B', 1: 'C', 2: 'B', 300: 'B'}}) 

print df 
    E1 E2 E3 
0 A B NaN 
1  A C NaN 
2  A B C 
300 X B C 

print df.stack().str.strip().drop_duplicates().tolist() 
['A', 'B', 'C', 'X'] 
+0

それはまだ同じ問題を@jezraelを持っています。正面に余分なスペースがあるため、いくつかの要素が新しいリストに複数回表示されます。 – controlfreak

+0

@jerzaelありがとうございました!今それは動作します! – controlfreak

関連する問題