Как объединить несколько файлов CSV на основе имени файла - PullRequest
0 голосов
/ 26 июня 2019

У меня есть более 1000 CSV-файлов, я хочу объединить, где первые пять цифр CSV-файла совпадают в одном CSV-файле.

    input:
    100044566.csv
    100040457.csv
    100041458.csv
    100034566.csv
    100030457.csv
    100031458.csv
    100031459.csv


import pandas as pd
import os
import glob
path_1 =''
all_files_final = glob.glob(os.path.join(path_1, "*.csv"))
names_1 = [os.path.basename(x1) for x1 in all_files_final]
final = pd.DataFrame()

for file_1, name_1 in zip(all_files_final, names_1):
    file_df_final = pd.read_csv(file_1,index_col=False)
    #file_df['file_name'] = name
    final = final.append(file_df_final)
final.to_csv('',index=False)


Я использовал приведенный выше код, но он объединяет все файлы в один CSV-файл, я не знаю, нужно ли выбирать на основе имени

так сверху ввод Выход 1: объединить первые три CSV-файла в один CSV-файл, потому что первые пять цифр имени файла совпадают.

вывод 2: объединить следующие 4 файла в один CSV-файл, поскольку первые пять цифр имени файла совпадают.

1 Ответ

0 голосов
/ 26 июня 2019

Я бы порекомендовал вам подойти к проблеме немного по-другому.

Вот мое решение:

import os
import pandas as pd

files = os.listdir('.') # returns list of filenames in current folder
files_of_interest = {} # a dictionary that we will be using in future

for filename in files: # iterate over files in a folder
    if filename[-4:] == '.csv': # check whether a file is of .csv format
        key = filename[:5] # as you've mentioned in you question - first five characters of filename is of interest
        files_of_interest.setdefault(key,[]) #if we dont have such key - .setdefault will create such key for us and assign empy list to it
        files_of_interest[key].append(filename) # append to a list new filename

for key in files_of_interest: 
    buff_df = pd.DataFrame()
    for filename in files_of_interest[key]:
        buff_df= buff_df.append(pd.read_csv(filename)) # iterate over every filename for specific key in dictionary and appending it to buff_df
    files_of_interest[key]=buff_df # replacing list of files by a data frame

Этот код создаст словарь данных. Где ключи словаря будут набором первых уникальных символов .csv файлов.

Затем вы можете перебирать ключи словаря, чтобы сохранить каждый соответствующий фрейм данных в виде .csv файла.

Надеюсь, мой ответ помог.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...