2017-02-02 5 views
0

Ich habe 2 CSV-Dateien mit zwei Spalten und einer großen Anzahl von Zeilen. Die erste Spalte ist die ID und die zweite Spalte ist die Menge der gepaarten Werte. z.B .:So finden Sie Kreuzung oder Teilmenge von zwei CSV-Dateien

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

Jetzt brauche ich eine CSV-Datei zu erhalten, die entweder exakt passende Produkte oder Teilmenge enthält, die zu beiden CSVs gehört.

Hier soll das Ergebnis sein:

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

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

Kann jemand Python-Code vorschlagen, dies zu tun?

+0

Ich habe versucht, die Formatierung und die Frage ein wenig zu verbessern. Haben Sie etwas versucht? – agold

Antwort

0

Wie von diesem answer vorgeschlagen, können Sie set.intersection verwenden, um die Schnittmenge von zwei Sätzen zu erhalten, dies funktioniert jedoch nicht mit Listen als Elemente. Stattdessen können Sie auch filter (vergleichbar mit this answer) verwenden:

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

In Python 3 Sie sollten es da zu list konvertieren filter gibt ein iterable:

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

Sie CSV-Dateien laden können (wenn sie sind wirklich Komma [oder ein anderes Zeichen] getrennte Dateien) mit csv.reader oder zum Beispiel.

Verwandte Themen