У меня есть две папки с файлами csv. Группа «основных» файлов и группа «непревзойденных» файлов. В основных файлах (~ 25 файлов, всего около 50 000 строк) есть уникальные идентификаторы. Каждая строка непревзойденных файлов (~ 250 файлов, всего около 700 000 строк) должна иметь идентификатор в строке, которая соответствует одному идентификатору в одном из основных файлов. В каждом из непревзойденных файлов все идентификаторы должны совпадать с одним основным файлом. Кроме того, все идентификаторы в непревзойденном должны находиться в пределах одного мастера.Сравнение нескольких файлов csv и поиск совпадений
К сожалению, столбцы не всегда согласованы, а поле id может отображаться в строке [2] или в строке [155]. (Я использую для этого python). Первоначально я использовал set.intersection и находил совпадающие экземпляры, где длина> 5 (отсутствуют значения, отмеченные знаком «.» Или просто пробел, который я хотел избежать.), Но быстро научился время выполнения слишком велико. Вообще говоря, мне нужно сопоставить «непревзойденные» файлы с его «основным» файлом, и я хотел бы иметь индекс столбца из «непревзойденного» файла с используемым идентификатором. Так что если непревзойденный файл unmatched_a имеет идентификаторы, которые в основном попадают под master_d, а столбец соответствия в unmatched_a на колонке 35, она возвращает строку:
unmatched_a, master_d, 35
Извинения, если это неясно - Я был бы рад попробовать и уточнить, если потребуется. Первая запись в stackoverflow. Я могу опубликовать код, который у меня есть до сих пор, но я не думаю, что это было бы полезно, потому что проблема связана с моим методом сравнения нескольких (относительно больших) CSV-файлов. Я видел много сообщений, сравнивающих два файла csv или файлы, где известен index_id, но ничего с несколькими файлами и несколькими файлами с потенциальными совпадениями.
Что именно вы делаете с каждым непревзойденным файлом? Можете ли вы дождаться, чтобы узнать, какой мастер-файл для него до конца обработки этого файла? – cmd
В каждом файле содержится только один столбец с идентификаторами? –
@ cmd - до конца все будет хорошо. способ, которым я занимался, был строковым, но это приводит к 50 000 * 700 000 итераций. Я посмотрел на каждую строку, создал набор, вынул значения с <5 символами и посмотрел на каждую строку в главном, чтобы найти совпадение. @SimonRighley - основные файлы не отличаются друг от друга и не обязательно один идентификатор - их не более четырех, и каждый раз он не совпадает друг с другом. – jack