Каталог расширений

Популярные теги

3gp       avi       fb2       jpg       mp3       pdf      

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


🔥 Как объединить .csv файлы? | Блог ленивого вебмастера

При работе с интернет магазином, в котором можно импортировать товар используя файл Excel с расширением .csv, встала задача объединить 5-6 файлов в один. Это нужно было для удобства импорта, да и для удобства редактирования и сортировки всего товара.
В данной небольшой статье мы покажем наглядно как это сделать не прибегая к сторонним программам. Использовать будем только командную строку.
В качестве примера мы возьмем два файла с расширением .csv. Используя данное руководство можно таким же образом соединить хоть 20 файлов, суть не изменится.
Итак, мы имеем 2 (или несколько) CSV файлов:

Для примера: в левом 2118 строк, в правом 1973 строки:

Теперь перейдем к «сборке» этих 2-х файлов в один:

  1. Поместите Ваши файлы CSV в одну папку. (для удобства проще всего сложить все файлы в корень какого либо диска, и назвать папку к примеру — hsp).
  2. Запускаем командную строку.
  3. Переходим в папку которую только что создали, вводим в командную строку: cd c:\hsp
  4. Жмем Enter 
  5. Далее вводим: copy *.csv hsp.csv
    (hsp.csv – имя финального файла)
  6. Жмем Enter и видим что соединение прошло успешно:

Получаем результат:

Внедрили бы уже такую фишку в редакторы CSV файлов, ну или в тот же Excel.

Ну вот и все! Ничего сложного!

Быстрый совет. Как объединить несколько .csv файлов

Некоторых моих читателей интересовал вопрос, как объединить несколько .csv файлов в один. В сегодняшней инструкции я пошёл немного дальше и рассказал, как объединить несколько любых файлов одного формата.

File Joiner — маленькая портабельная программа, которая помогает объединить несколько файлов в один.

Задача: объединить несколько разных книг Excel в одну книгу на одном листе. Для решения этой задачи нам понадобится надстройка RDBMerge add-in. Объединение файлов Excel

Программа поддерживает практически все форматы ОС Windows. Чтобы объединить нужные файлы просто добавьте их в программу в необходимом порядке и нажмите «Склеить». После чего программа создаст единый файл.

Интерфейс File Joiner

Скачать File Joiner

Объединение столбцов из нескольких файлов CSV в один файл

в эти дни кажется почти обязательным для кого-то, чтобы дать панды-решение любой проблемы обработки данных в Python. Так вот мой:

import pandas as pd to_merge = ['{}.csv'.format(i) for i in range(4)] dfs = [] for filename in to_merge: # read the csv, making sure the first two columns are str df = pd.read_csv(filename, header=None, converters={0: str, 1: str}) # throw away all but the first two columns df = df.ix[:,:1] # change the column names so they won't collide during concatenation df.columns = [filename + str(cname) for cname in df.columns] dfs.append(df) # concatenate them horizontally merged = pd.concat(dfs,axis=1) # write it out merged.to_csv("merged.csv", header=None, index=None) 

что для файлы

~/coding/pand/merge$ cat 0.csv 0,a,6,5,3,7 ~/coding/pand/merge$ cat 1.csv 1,b,7,6,7,0 2,c,0,1,8,7 3,d,6,8,4,5 4,e,8,4,2,4 ~/coding/pand/merge$ cat 2.csv 5,f,6,2,9,1 6,g,0,3,2,7 7,h,6,5,1,9 ~/coding/pand/merge$ cat 3.csv 8,i,9,1,7,1 9,j,0,9,3,9 

дает




In [21]: !cat merged.csv 0,a,1,b,5,f,8,i ,,2,c,6,g,9,j ,,3,d,7,h,, ,,4,e,,,, In [22]: pd.read_csv("merged.csv", header=None) Out[22]: 0 1 2 3 4 5 6 7 0 0 a 1 b 5 f 8 i 1 NaN NaN 2 c 6 g 9 j 2 NaN NaN 3 d 7 h NaN NaN 3 NaN NaN 4 e NaN NaN NaN NaN 

который, я думаю, является правильным выравниванием.

Импорт нескольких csv-файлов в pandas и объединение в один фрейм данных

если вы хотите поиск рекурсивно (Python 3.5 или выше), вы можете сделать следующее:

from glob import iglob import pandas as pd path = r'C:\user\your\path\**\*.csv' all_rec = iglob(path, recursive=True) dataframes = (pd.read_csv(f) for f in all_rec) big_dataframe = pd.concat(dataframes, ignore_index=True) 

обратите внимание, что три последние строки могут быть выражены в одном один строка:

df = pd.concat((pd.read_csv(f) for f in iglob(path, recursive=True)), ignore_index=True) 

вы можете найти документацию ** здесь. Кроме того, я использовал iglobвместо glob, так как он возвращает итератор вместо списка.



изменить: Мультиплатформенная рекурсивная функция:

вы можете обернуть выше в мультиплатформа функция (Linux, Windows, Mac), так что вы можете сделать:

df = read_df_rec('C:\user\your\path', *.csv) 

вот функция:

from glob import iglob from os.path import join import pandas as pd def read_df_rec(path, fn_regex=r'*.csv'): return pd.concat((pd.read_csv(f) for f in iglob( join(path, '**', fn_regex), recursive=True)), ignore_index=True) 

Объединение кучи файлов csv в один с заголовками

Вопрос:

У меня есть пара CSV файлов, которые я хочу объединить в список, а затем выводю как один объединенный csv. Предположим, что эти файлы называются file1.csv, file2.csv, file3.csv и т.д….

file1.csv # example of what each might look like
 V1 V2 V3 V4
 12 12 13 15
 14 12 56 23
 

Как создать список этих csvs, чтобы я мог вывести объединенный csv, который имел бы заголовки в качестве имен файлов и имена столбцов в верхней части в виде комментариев? Итак, csv, который будет выглядеть примерно так в Excel:

# 1: V1
 # 2: V2
 # 3: V3
 # 4: V4
 
 file1.csv
 12 12 13 15
 14 12 56 23
 
 file2.csv
 12 12 13 15
 14 12 56 23
 
 file3.csv
 12 12 13 15
 14 12 56 23
 

Я пытаюсь использовать функцию list внутри цикла double for, чтобы объединить эти csvs вместе, записать каждый список в переменную и записать каждую переменную в вывод таблицы. однако это не работает должным образом.

# finding the correct files in the directory
 files <- dir("test files/shortened")
 files_filter <- files[grepl("*\\.csv", files)]
 levels <- unique(gsub( "-.*$", "", files_filter))
 
 # merging
 for(i in 1:length(levels)){
 level_specific <- files_filter[grepl(levels[i], files_filter)]
 bindme
 for(j in 1:length(level_specific)){
 bindme2 <- read.csv(paste("test files/shortened/",level_specific[j],sep=""))
 bindme <- list(bindme,bindme2)
 assign(levels[i],bindme)
 }
 write.table(levels[i],file = paste(levels[i],"-output.csv",sep=""),sep=",")
 }
 

Лучший ответ:

Глядя на ваш код, я думаю, вам не нужен цикл for. С пакетом data.table вы можете сделать это следующим образом:

filenames <- list.files(pattern="*.csv")
 files <- lapply(filenames, fread) # fread is the fast reading function from the data.table package
 merged_data <- rbindlist(files)
 write.csv(merged_data, file="merged_data_file.csv", row.names=FALSE)
 

Если хотя бы один из csv имеет имена столбцов, они будут использоваться в результирующем datatable.


Учитывая ваш код, его можно значительно улучшить. Эта:

files <- dir("test files/shortened")
 files_filter <- files[grepl("*\\.csv", files)]
 

может быть заменено просто:

filenames <- list.files(pattern="*.csv")
 

В вашем for-loop при первом вызове bindme он ничего не делает. Что это? Список? Кадр данных? Вы можете использовать что-то вроде:

bindme <- data.table() # or data.frame()
 

Кроме того, часть:

write.table(levels[i],file = paste(levels[i],"-output.csv",sep=""),sep=",")
 

будет генерировать несколько csv -files, но вам нужен только один объединенный файл.

Ответ №1

Будет ли эта помощь


mergeMultipleFiles <- function(dirPath, nameRegex, outputFilename){
 filenames <- list.files(path=dirPath, pattern=nameRegex, full.names=TRUE, recursive=T)
 dataList <- lapply(filenames, read.csv, header=T, check.names=F)
 combinedData <- ldply(dataList, rbind)
 write.csv(combinedData, outputFilename)
 }
 

ps: В именах файлов добавлено регулярное выражение. На всякий случай вы хотите только слить определенный «шаблон» файлов.

Ответ №2

Измените этот пример. Если я правильно понял ваш вопрос, это поможет вам.

# get the names of the csv files in your current directory
 file_names = list.files(pattern = "[.]csv$")
 
 # for every name you found go and read the csv with that name
 # (this creates a list of files)
 import_files = lapply(file_names, read.csv)
 
 # append those files one after the other (collapse list elements to one dataset) and save it as d
 d=do.call(rbind, import_files)
 

Как объединить несколько файлов csv в один файл csv в R, добавив столбцы?

Вопрос:

У меня есть серия .csv файлов, которые были созданы как выход цикла for (на основе изменяющейся переменной STOCKNAME) в R. Каждый файл csv называется XXXX.csv где XXXX — это имя, используемое в цикле for. Каждый файл csv имеет три столбца, но для строк — разный размер. Я хочу создать один файл csv, который будет включать в себя все разные столбцы.

if csv files 1 is like C1 C2
 and
 csv file 2 is C3 C4
 

Я хочу, чтобы мой конечный результат был csv файлом, таким как C1 C2 C3 C4.

заранее спасибо

Ответ №1

Если файлы не слишком большие, то есть легко вписываются в память, вы можете использовать комбинацию cbind и lapply для создания одного большого файла данных, который можно сохранить с помощью write.csv. В этом выглядит что-то вроде:

fnames = list.files()
 big_list = lapply(fnames, read.csv)
 big_data = do.call("cbind", big_list)
 write.csv(big_data, file = "big.csv")
 

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

max_nrow = max(sapply(big_list, nrow))
 

Объединить файлы CSV онлайн в один файл

Объединить файлы CSV онлайн в один файлeПриватность и согласие на использование файлов cookie GPDR через Согласие на использование файлов cookie



Объедините несколько файлов CSV всего за три простых шага

1. Щелкните Выберите CSV-файлы или перетащите файлы в поле «Перетащить и отпустить», чтобы начать слияние.
Сейчас идет подготовка файлов CSV. для комбинирования.Вы можете видеть прогресс на синих полосках. После того, как каждый файл загружен, вы можете переходить к шагу 2.

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

3. Вот и все! Теперь вы можете объединить CSV-файл, нажав «Объединить CSV-файлы». Затем вы можете скачать свой файл и импортировать его в Excel или другое программное обеспечение.


    .

    Как объединить (объединить) несколько файлов CSV в один файл CSV с помощью CMD

    Вот полезный совет, если вам когда-нибудь понадобится объединить несколько файлов CSV в один файл CSV. Это может быть полезно, если вам нужно запускать отчеты (например, отчет о кристаллах) на основе данных, когда вам нужно, чтобы данные были в одном файле.

    Следующая единственная командная строка объединит все CSV-файлы в папке в один файл под названием «комбинированный.csv»

     копировать * .csv комбинированный.csv 

    Если вы хотите запустить это из cmd-файла , скопируйте следующее содержимое в текстовый файл и сохраните его как «run.cmd ’.

    Эта команда будет автоматически запускаться из папки, в которой сохранен файл, то есть - если вы сохраните ее в C: \ TEMP, она будет искать файлы CSV в C: \ TEMP и сохранять новый файл в C: \ TEMP

     @ эхо выкл. скопировать% ~ dp0 * .csv% ~ dp0combined.csv 

    Так что, если в ваших исходных файлах есть строка заголовка? Следующая команда возьмет заголовок из первого файла, а затем исключит его из остальных. Скопируйте следующее содержимое в текстовый файл и сохраните как «run.cmd».

     @ эхо выкл. ECHO Установить рабочий каталог pushd% ~ dp0 ECHO Удаление существующего комбинированного файла дель в сочетании.csv setlocal ENABLEDELAYEDEXPANSION REM устанавливает счетчик на 1 установить cnt = 1 REM для каждого файла, соответствующего * .csv для %% i в (* .csv) выполните ( REM, если count 1, запускается впервые если! cnt! == 1 ( REM поместите весь файл вместе с заголовком в комбинированный.csv - это также создаст комбинированный.csv for / f "delims =" %% j in ('type "%% i"') do echo %% j >> комбинированный.csv В противном случае убедитесь, что мы не работаем с объединенным файлом и ) иначе, если объединены %% i NEQ.csv ( REM поместите файл без заголовка в комбинированный.csv for / f "skip = 1 delims =" %% j in ('type "%% i"') do echo %% j >> комбинированный.csv ) Количество приращений REM на 1 установить / a cnt + = 1 ) 

    Проблемы?

    Вы можете скачать пример этого скрипта здесь: www.itsupportguides.com/downloads/csvmerge.zip

    Примечание: этот процесс не будет работать для файлов XLS (или аналогичных) - файлы CSV представляют собой текстовые файлы, к их данным можно легко получить доступ с помощью сценариев, в то время как файлы XLS являются двоичными файлами и для доступа к данным требуется приложение, такое как Microsoft Excel. .

    .

    Как объединить тысячи файлов .csv в один мастер-файл?

    Переполнение стека
    1. Около
    2. Продукты
    3. Для команд
    1. Переполнение стека Общественные вопросы и ответы
    2. Переполнение стека для команд Где разработчики и технологи делятся частными знаниями с коллегами
    3. Вакансии Программирование и связанные с ним технические возможности карьерного роста
    4. Талант Нанимайте технических специалистов и б
    .

    Объединение нескольких файлов CSV в один с помощью PowerShell

    Переполнение стека
    1. Около
    2. Продукты
    3. Для команд
    1. Переполнение стека Общественные вопросы и ответы
    2. Переполнение стека для команд
    .

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

    Переполнение стека
    1. Около
    2. Продукты
    3. Для команд
    1. Переполнение стека Общественные вопросы и ответы
    2. Переполнение стека для команд Где разработчики и технологи делятся частными знаниями с коллегами
    3. Вакансии Программирование и связанные с ним технические возможности карьерного роста
    4. Талант Нанимайте технических специалистов и создавайте свой бренд работодателя
    .

    Смотрите также