Nano Hash - криптовалюты, майнинг, программирование

Объединение двух файлов .csv рядом друг с другом

ОБНОВЛЕНИЕ ***** Я решил использовать awk в Windows. Используйте эту команду для успешного добавления файлов рядом.

call awk -F"\t" "NR==FNR{a[NR]=$1; next} {print a[FNR], $0}" OFS="\t" test1.csv test2.csv

Я пробовал это несколькими способами, но все еще не могу заставить его работать, я предполагаю, что это как-то связано со специальными символами в одном из файлов. С помощью инструмента paste это просто.

paste test1.csv test2.csv. > Test3.csv in Linux. 

Но у меня нет доступа к чему-либо связанному с Linux для этой задачи.

Моя среда — Windows 7 с установленным Python 2.7 (без Pandas) и Perl Strawberry.

Мне нужно объединить 2 (или более) CSV-файла рядом друг с другом. Файлы всегда будут иметь одинаковое количество строк.

Я пробовал это с помощью python, и это не сработало.

Объединяйте txt-файлы рядом друг с другом в python

Я пробовал это с помощью Batch, и это не сработало.

Объединить CSV-файл рядом с помощью пакетного файла.

test1.csv содержит

python pdf2txt.py -o C:\Users\user\Desktop\Folder\Folder2\
python pdf2txt.py -o C:\Users\user\Desktop\Folder\Folder2\
python pdf2txt.py -o C:\Users\user\Desktop\Folder\Folder2\

test2.csv содержит

123456.pdf
123457.pdf
124587.pdf

Я хочу, чтобы на выходе (Test3.csv) был файл с разделителями табуляции, содержащий;

python pdf2txt.py -o C:\Users\user\Desktop\Folder\Folder2\    123456.pdf
python pdf2txt.py -o C:\Users\user\Desktop\Folder\Folder2\    123457.pdf
python pdf2txt.py -o C:\Users\user\Desktop\Folder\Folder2\    124587.pdf

Любая помощь приветствуется.

спасибо вам.

16.07.2017

  • Вы сказали, что уже пробовали разные вещи — с какой проблемой вы столкнулись? Пожалуйста, опубликуйте свой текущий код и сообщите нам, какой результат или ошибку вы получаете. 17.07.2017
  • Что вы пробовали? Мы не сможем сказать вам, что вы сделали не так, если вы не покажете нам. 17.07.2017
  • Почему ты не знаешь, на каком языке говоришь? Пожалуйста, исправьте теги. 17.07.2017
  • Тот факт, что у вас установлен Strawberry Perl, не делает его вопросом Perl. Вероятно, у вас также установлен компилятор C, но C не помечен. Если у вас нет примера на определенном языке, пожалуйста, не отмечайте спам. Я удаляю Perl. 17.07.2017

Ответы:


1

Вот решение с использованием zip. Возможно, вам придется поиграть с символами разделителя и кавычек в зависимости от точной настройки ваших CSV-файлов.

with open('test1.csv', 'rb') as t1, open('test2.csv', 'rb') as t2, open('output.csv', 'wb') as output:
     r1 = csv.reader(t1, delimiter=' ')
     r2 = csv.reader(t2, delimiter=' ')
     w = csv.writer(output, delimiter=' ')
     for a, b in zip(r1, r2):
             w.writerow(a + b)
16.07.2017

2

Вот альтернативное и более интуитивно понятное решение с использованием pyexcel:

>>> import pyexcel as p
>>> left=p.get_sheet(file_name='left.csv')
>>> left
left.csv:
+------------------------------------------------------------+
| python pdf2txt.py -o C:\Users\user\Desktop\Folder\Folder2\ |
+------------------------------------------------------------+
| python pdf2txt.py -o C:\Users\user\Desktop\Folder\Folder2\ |
+------------------------------------------------------------+
| python pdf2txt.py -o C:\Users\user\Desktop\Folder\Folder2\ |
+------------------------------------------------------------+
>>> right=p.get_sheet(file_name='right.csv')
>>> right
right.csv:
+------------+
| 123456.pdf |
+------------+
| 123457.pdf |
+------------+
| 124587.pdf |
+------------+
>>> left.column+=right # that's it
>>> left
left.csv:
+------------------------------------------------------------+------------+
| python pdf2txt.py -o C:\Users\user\Desktop\Folder\Folder2\ | 123456.pdf |
+------------------------------------------------------------+------------+
| python pdf2txt.py -o C:\Users\user\Desktop\Folder\Folder2\ | 123457.pdf |
+------------------------------------------------------------+------------+
| python pdf2txt.py -o C:\Users\user\Desktop\Folder\Folder2\ | 124587.pdf |
+------------------------------------------------------------+------------+
>>> left.save_as('merged.csv') # save it

Для огромных наборов данных вышеуказанное решение будет медленным или невозможным для завершения. Следовательно, вот код, чтобы справиться с огромными наборами данных:

>>> import pyexcel as p
>>> left=p.iget_array(file_name='left.csv')
>>> right=p.iget_array(file_name='right.csv')
>>> p.isave_as(array=(a+b for a, b in zip(left, right)), dest_file_name='merged.csv')
>>> p.free_resources()
18.07.2017

3

Пакет python pyexcel имеет pyexcel.cookbook.merge_two_filespyexcel.cookbook.merge_files для объединения N файлов).

(pip install pyexcel, см. http://docs.pyexcel.org)

07.06.2019
Новые материалы

Кластеризация: более глубокий взгляд
Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

Как написать эффективное резюме
Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

Частный метод Python: улучшение инкапсуляции и безопасности
Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

Как я автоматизирую тестирование с помощью Jest
Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..