Самым простым решением было бы создание хеш-таблицы для каждой строки в файле - хранение 16M хешей в вашей рабочей памяти не должно быть проблемой (зависит от размера хеша, хотя) - тогда вы можете перебирать свой файл сноваи убедитесь, что вы записываете только одно вхождение каждого хэша.Вам даже не нужно анализировать CSV-файл и вам не нужны Pandas.
import hashlib
with open("input.csv", "r") as f_in, \
open("output.csv", "w") as f_out:
seen = set() # a set to hold our 'visited' lines
for line in f_in: # iterate over the input file line by line
line_hash = hashlib.md5(line.encode()).digest() # hash the value
if line_hash not in seen: # we're seeing this line for the first time
seen.add(line_hash) # add it to the hash table
f_out.write(line) # write the line to the output
Это использует MD5 в качестве хэша, поэтому потребуется около 16B + накладных расходов на каждую строку, но это все равно намного меньше, чем хранение всегов памяти - вы можете ожидать ~ 500 МБ использования памяти для файла CSV 16M строк.