2016-12-21 7 views
1

私は2次元配列を持っています。配列に値を追加すると、重複する値があります。どうすればこれらを削除できますか?名前の私のARAYは、:次のようになります。2d配列の重複を削除するPython

[[u'82', <a href="/12222/">Button</a>], [u'67', <a href="/12333/">Button</a>], [u'23', <a href="/12344/">Button</a>], [u'19', <a href="/12345/">Button</a>], [u'23', <a href="/12344/">Button</a>]] 

私は

import numpy as np 
def unique(a): 
    order = np.lexsort(a.T) 
    a = a[order] 
    diff = np.diff(a, axis=0) 
    ui = np.ones(len(a), 'bool') 
    ui[1:] = (diff != 0).any(axis=1) 
    return a[ui] 

そして

[list(t) for t in set(tuple(element) for element in a)] 

そして

from pandas import * 
import numpy as np 
a = np.array([[1, 1], [2, 3], [1, 1], [5, 4], [2, 3]]) 
DataFrame(a).drop_duplicates().values 

を試してみました。しかし、それらのどれも動作しません。 2d配列から重複を削除するにはどうすればよいですか?

+0

あなたの 'a'には重複はありません、' drop_duplicates(サブセット= 'a') 'は – EdChum

+0

@EdChumですが、データフレームはまずサブセットとして参照する前に作成する必要があります。 OPはこれをすべて1つのステップで実行しようとしていたため、失敗しました。 – tnknepp

答えて

-1

問題は、すべてを1つのステップで実行しようとしていることです。あなたは

df = pd.DataFrame(data=a) 
df = df.drop_duplicates(subset=a) 

パーEdChumさんのコメント(EdChumがほとんどだった)、それを分割する必要があるデータフレーム(DF)が作成されていない限り、これは、そうでなければ、我々はサブセットとしてそれを参照することはできませんが、動作しません。

+0

連鎖呼び出しが機能しているはずです。連鎖とは別の関数呼び出しとして呼び出しを行う意味に違いはありません。 – EdChum

+0

いいえ、私は修正しました。私は、サブセットとして "a"への参照を考えていたと思います。しかし、私はちょうどOPが示唆したように(サブセットを参照していない)連鎖呼び出しを試みましたが、問題なく動作しました。 – tnknepp

+0

は今、私のコードは次のとおりです。NPのA = np.array(リスト) #DataFrame(a)の.drop_duplicates()としてPD 輸入numpyのよう輸入パンダ= DF = pd.DataFrame(データ= A) DF値。 「 ファイル(A =サブセット) DF = df.drop_duplicatesに ファイル "scrapefolk.py"、行114、:トレースバック(最後の最新の呼び出し):df.drop_duplicates(サブセット= A) – vladasha

関連する問題