Как объединить файлы .csv с python? - PullRequest
0 голосов
/ 17 апреля 2020

Нам пришлось объединить много CSV-файлов и мы не нашли никакого метода работы (через MS Excel, через Python & Pandas, ...). Все файлы имеют одинаковую структуру, как вы можете видеть на прилагаемой фотографии. Ничего не нужно менять по контенту, только все столбцы всех файлов добавляются в один большой CSV. Ждем ваших идей! Структура файлов .csv

Ответы [ 3 ]

2 голосов
/ 17 апреля 2020
import os
import glob
import pandas as pd

# Set me!
# WORKING_DIR = "/mydir"
# or leave blank to act on current folder
WORKING_DIR = ""

OUTPUT = "combined.csv"

if WORKING_DIR:
    # set working directory
    os.chdir(WORKING_DIR)

# find all csv files in the folder
suffix = '.csv'
all_filenames = [
    p for p in glob.glob('*{}'.format(suffix)) 
    if p != OUTPUT
]

final = pd.concat((pd.read_csv(f) for f in all_filenames), axis=1)

# export to csv
final.to_csv(OUTPUT, index=False, encoding='utf-8-sig')

На основе https://github.com/ekapope/Combine-CSV-files-in-the-folder/blob/master/Combine_CSVs.py и ответа, предоставленного Бернардо Коста.

Вам необходимо установить pandas, чтобы это работало.

1 голос
/ 18 апреля 2020

Один из возможных способов сделать это:

import pandas as pd
import os

# File paths:
all_files_paths = []  # empty list to store your .csv file names
for i in os.listdir(r'C:\\Users\\John'):  # directory where all your .csv file are
    if i[:5] == 'shoes':  # load only files starting with for example "shoes".
        all_files_paths.append(i)

list_of_dataframes = []  # empty list to store the dataframes of your files
for i in range(len(all_files_paths)):
    list_of_dataframes.append(pd.read_csv(os.path.join('C:\\Users\\John',  all_files_paths[i])))

final_dataframe = pd.concat(list_of_dataframes, axis=1)  # concatenating the different .csv files.

Существует много других опций при объединении, объединении или объединении файлов .csv, которые стоит изучить.

0 голосов
/ 18 апреля 2020

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

import os
import pandas as pd

dir_path = "path_to_directory_containing_all_csv_files_goes_here"

all_filenames = os.listdir(dir_path)

combined_csv = pd.concat([pd.read_csv(dir_path+f) for f in all_filenames],axis=1)

combined_csv.to_csv('combined.csv', index=False )
...