Aha, so wie es sich jetzt darstellt, kommen die Daten aus einer DB/Tabelle. Da würde ich aber nicht erst in der CSV Datei versuchen die Duplikate zu bereinigen sondern genau das spätestens beim Datenexport tun. Das macht die Sache erheblich einfacher.
Falls andersherum, CSV => DB:
Die CSV-Datei in den Hauptspeicher lesen, dabei bekommen die Spalten Namen, eine dem enstprechende Stuktur sähe in etwa so aus:
1: {name: foo, vname: bar},
2: {name: dig, vname: dog}
usw. wobei 1, 2 einen Tupel eindeutig kennzeichnen. Um Redundanzen bestimmter Datenfelder rauszufiltern würde ich für die Tabelle dem entsprechende (eindeutige) Schlüsselfelder festlegen.
MFG