Python: «вставить» несколько (неизвестных) csvs вместе

В основном я ищу команду `paste 'в bash, но в Python2. Предположим, у меня есть файл csv:

a1,b1,c1,d1 a2,b2,c2,d2 a3,b3,c3,d3 

И еще один такой:

  • Экспорт csv-файла из scrapy (не через командную строку)
  • Почему этот код вызывает csv.Error?
  • Запись списка списков Python в файл csv
  • Ориентация на Python - CSV Транспонирование большого количества столбцов в строки
  • удалить пробелы из файла csv
  • python csv в словарь
  •  e1,f1 e2,f2 e3,f3 

    Я хочу объединить их в это:

     a1,b1,c1,d1,e1,f1 a2,b2,c2,d2,e2,f2 a3,b3,c3,d3,e3,f3 

    Это самый простой случай, когда у меня есть известное число и только два. Что, если бы я хотел сделать это с произвольным количеством файлов, не зная, сколько у меня есть.

    Я думаю о том, как использовать zip со списком итераций csv.reader. Будет задействована некоторая распаковка, но похоже, что много python-foo находится выше моего ATM уровня IQ. Может ли кто-нибудь предложить, как реализовать эту идею или что-то совершенно иное?

    Я подозреваю, что это должно быть выполнимо с помощью короткого фрагмента. Благодарю.

  • Как обрабатывать изображения видео, кадр за кадром в потоковой передаче видео с помощью Opencv python
  • Как выполнять анализ зависимостей в NLTK?
  • Список всех файлов в онлайн-каталоге с Python?
  • Наложение нескольких гистограмм с использованием панд
  • Sqlalchemy mixins / и прослушиватель событий
  • Что быстрее и почему? Set или List?
  • 3 Solutions collect form web for “Python: «вставить» несколько (неизвестных) csvs вместе”

    Предполагая, что количество файлов неизвестно, и что все файлы правильно отформатированы, поскольку csv имеют одинаковое количество строк:

     files = ['csv1', 'csv2', 'csv3'] fs = map(open, files) done = False while not done: chunks = [] for f in fs: try: l = next(f).strip() chunks.append(l) except StopIteration: done = True break if not done: print ','.join(chunks) for f in fs: f.close() 

    Кажется, нет простого способа легко использовать контекстные менеджеры с переменным списком файлов, по крайней мере в Python 2 (см. Комментарий в принятом ответе здесь ), поэтому потребуется ручное закрытие файлов, как указано выше.

     file1 = open("file1.csv", "r") file2 = open("file2.csv", "r") for line in file1: print(line.strip().strip(",") +","+ file2.readline().strip()+"\n") 

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

    Вы можете попробовать панды

    В вашем случае группу [a, b, c, d] и [e, f] можно рассматривать как DataFrame в Pandas, и это легко сделать, потому что у Pandas есть функция, называемая concat.

     import pandas as pd # define group [ad] as df1 df1 = pd.read_csv('1.csv') # define group [ef] as df2 df2 = pd.read_csv('2.csv') pd.concat(df1,df2,axis=1) 
    Python - лучший язык программирования в мире.