2017-02-02 5 views
0

2つの列と多数の行を含む2つのCSVファイルがあります。最初の列はidで、2番目の列はペア値のセットです。 例えば:2つのCSVファイルの交差点またはサブセットの検索方法

CSV1:

1 {[1,2],[1,4],[5,6],[3,1]} 

2 {[2,4] ,[6,3], [8,3]} 

3 {[3,2], [5,2], [3,5]} 

CSV2:

1 {[2,4] ,[6,3], [8,3]} 

2 {[3,4] ,[3,3], [2,3]} 

3 {[1,4],[5,6],[3,1],[5,5]} 

は今、私は両方のCSVに属している完全一致項目またはサブセットのいずれかを含むCSVファイルを取得する必要があります。

ここでの結果は次のようになります。

{[2,4] ,[6,3], [8,3]} 

{[1,4],[5,6],[3,1]} 

誰もがこれを行うにはPythonのコードを示唆することはできますか?

+0

私は書式設定と質問を少し改善しようとしました。 試しましたか? – agold

答えて

0

answerで提案されているように、set.intersectionを使用すると2つのセットの交差を取得できますが、これはアイテムとしてリストでは機能しません。代わりに、あなたはまた、(this answerに匹敵)filterを使用することができますPythonの3では

>>> l1 = [[1,2],[1,4],[5,6],[3,1]] 
>>> l2 = [[1,4],[5,6],[3,1],[5,5]] 
>>> filter(lambda q: q in l2, l1) 
[[1, 4], [5, 6], [3, 1]] 

あなたはfilterが反復可能を返すがするのでlistに変換する必要があります

>>> list(filter(lambda x: x in l2,l1)) 

あなたはCSVファイルを読み込むことができます(これらの場合には実際にはカンマ[または他の文字]で区切られたファイル)で、たとえばcsv.readerまたはpandas.read_csvです。

関連する問題