Как объединить csv файлы в один python
Перейти к содержимому

Как объединить csv файлы в один python

  • автор:

Зачем это нужно?

Копипаст вручную — это, может, и не самый плохой вариант для небольшого количества файлов.

Но представьте, что вам нужно объединить 100+ файлов… готовы ли вы сделать все вручную? Эта затея весьма утомительна и чревата ошибками.

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

Шаг 1: Импортируйте пакеты и задайте рабочую директорию

Измените “/mydir” на нужную вам директорию.

import os
import glob
import pandas as pd
os.chdir("/mydir")

Шаг 2: Воспользуйтесь glob для сопоставления с шаблоном ‘csv’

Сопоставьте шаблон (‘csv’) и сохраните список имен файлов в переменной ‘all_filenames’. Здесь можно почитать о сопоставлении регулярных выражений.

extension = 'csv'
all_filenames = [i for i in glob.glob('*.<>'.format(extension))]

Шаг 3: Объедините файлы в список и экспортируйте в CSV

Воспользуйтесь pandas для объединения файлов в список и экспорта в CSV. На выходе получится файл “combined_csv.csv”. Найти его можно в рабочей директории.

Для экспорта «неанглийских» языков добавляется encoding = ‘utf-8-sig’.

#combine all files in the list
combined_csv = pd.concat([pd.read_csv(f) for f in all_filenames ])
#export to csv
combined_csv.to_csv( "combined_csv.csv", index=False, encoding='utf-8-sig')

Как объединить несколько CSV файлов в один?

Есть несколько CSV файлов, которые я хочу объединить в один. Изначально воспользовался ответом, который предлагает следующее:

import fileinput import glob file_list = glob.glob("*.csv") with open('result.csv', 'w') as file: input_lines = fileinput.input(file_list) file.writelines(input_lines) 

Проблема оказалась в том, что при объединении не добавляется перенос строки после очередного файла (т.е. первая строка второго файла оказывается совмещена с последней строкой первого файла). Кроме того, каждый CSV файл имеет заголовок (одинаковый для всех), который хорошо бы убрать у всех фалов, кроме первого. Сейчас объединяю вручную:

with open(target_filename, 'w') as target_file: file_counter = 0 for file_ in files: line_counter = 0 for line in open(file_, 'r'): if line_counter == 0 and file_counter > 0: target_file.write('\r\n') else: target_file.write(line) line_counter += 1 file_counter += 1 

Каким образом сделать объединение эффективнее?

Объединить несколько csv в один

В данной заметке ответим на вопрос: как объединить несколько csv в один.

Периодически (не только в жизни тестировщика) бывает есть необходимость в том, чтобы объединить (склеить, соединить) несколько csv файлов (текстовых файлов) в один csv-файл (текстовый txt файл).

Для этого необязательно ставить отдельные программы, утилиты, искать онлайн-сервис по склеиванию, объединению, текстовых csv файлов.

Способ очень простой.

1. Заходим в командную строку (открываем cmd в Windows).

2. Заходим в папку, где лежит несколько csv файлов.

3. Вводим команду copy *.csv out.csv

В результате будут склеены все csv-файлы, находящееся в нашей папке в один склеенный csv-файл.

Вот такая простая команда творит чудеса — решает нашу задачу — объединить (склеить) несколько csv-файлов.

Как еще можно произвести чтение файлов CSV в цикле с использованием pandas, а затем их объединение?

У меня есть 10 файлов csv, с именами data1.csv , data2.csv , data3.csv . data10.csv которые нужно прочитать через библиотеку pandas и соединить в один большой датафрейм.
Как это сделать с помощью цикла?

Я написала следующее:
IN
file_name = ‘data<>.csv’
df_list = []
for i in range(1,11):
df_list.append(pd.read_csv(‘/content/drive/MyDrive/для учебы/booking/’+ file_name.format(i))

На выходе получается ошибка SyntaxError, в чем может быть проблема?

Как это можно было бы сделать по-другому?
Например, в подсказках к задаче мне предлагается сделать список из имеющихся файлов, но я не понимаю к чему он вообще нужен, возможно сделать что-то с применением этого списка:

IN
import pandas as pd
import os as os
files = os.listdir(‘/content/drive/MyDrive/для учебы/booking’) # получаем список наших файлов и сохраняем его в переменную files

OUT
[‘data1.csv’,
‘data2.csv’,
‘data3.csv’,
‘data4.csv’,
‘data5.csv’,
‘data6.csv’,
‘data7.csv’,
‘data8.csv’,
‘data9.csv’,
‘data10.csv’]

  • Вопрос задан более двух лет назад
  • 231 просмотр

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *