У меня есть большой текстовый файл (от 5 ГБ до 35 ГБ). Я хочу объединить эти файлы по столбцам (или лучше объединить их). Все файлы имеют столбец идентификатора, и они имеют одинаковые записи в этом столбце, поэтому их можно объединить. Файлы выглядят следующим образом:Слияние больших текстовых файлов по столбцу идентификатора
Файл 1 (файлы более 1000 столбцов, разделенных символами табуляции):
ID col1 col2
ab1000025 1 2
ab1000053 2 3
ab1250223 3 1
Файл 2:
ID col3 col4
ab1000025 2 2
ab1000053 2 1
ab1250223 3 1
Я попробовал два способа:
Я использовал Python с рамками данных pandas. К сожалению, размер файлов увеличивается, когда они считываются как pd.dataframe. Я работаю на сервере, но машина все еще недостаточно. Из-за этой проблемы у меня возникла другая идея ...
Я отсортировал файлы, используя команду сортировки bash, а затем хочу их объединить. К сожалению, это проблема при сортировке моих файлов. Проблема, которая у меня есть, заключается в том, что команда sort не сортирует все файлы одинаково. Реальная проблема в записи, подобные этим:
ab100005 ab1000050
Я доказал идентификатор с R, после сортировки. Я извлек только столбец идентификатора, прочитал его в R, а затем сравнил столбцы со всеми файлами, и кажется, что он иногда сортирует ab100005 до ab1000050 и что-то позади. Я не уверен на 100%, если это проблема с извлечением или чтением его в R, но я думаю, что не потому, что я проверял также исходные отсортированные файлы и на одной и той же позиции (номер строки) - разные записи в разных файлах. Этого не должно быть.
Команда сортировки я использовал:
sort -t$'\t' -k1,1 -n file.txt
или
sort -t$'\t' -k1,1 -h file.txt
Может быть, кто-то имеет совершенно иную идею объединить файлы (с помощью Баша, Python, или R). Это было бы прекрасно. Нужный выход из двух файлов выше будет:
ID col1 col2 col3 col4
ab1000025 1 2 2 2
ab1000053 2 3 2 1
ab1250223 3 1 3 1
ли все файлы имеют одинаковые идентификаторы (игнорируя вопрос заполнения вы отметили) и, следовательно, такое же количество строк (строк) ? – Gopala
Да, у них одинаковое количество строк. – Tobias