как открыть папку с несколькими фреймами данных в Python и объединить в один CSV-файл - PullRequest
0 голосов
/ 04 октября 2019

как открыть папку с несколькими df python при объединении всех в один CSV-файл

У меня около 700 CSV-файлов, все имеют одинаковые столбцы, мне нужно объединить все в один CSV-файл.

это данные, это все в одной папке, в имени файла есть шаблон, это как "date" = ex: 07 25 2018

07252018 = {name: "Carlos", age:"30", height: "15" }

name     age   height
Carlos   30    15



07262018 = {name: "Carlos", age:"30", height: "15" }

name     age   height
Carlos   30    15



and etc.. range of 700csv

что я сделал ..

  • это работает, но очень ручное, требует большого набора текста, поскольку существует 700 csv

03012018 = pd.read_csv("Data/03012018 )
03022018 = pd.read_csv("Data/03012018 )
03032018 = pd.read_csv("Data/03012018 )
03042018 = pd.read_csv("Data/03012018 )
03052018 = pd.read_csv("Data/03012018 )
and etc..



file = pd.cancat([03012018,03022018,03032018,03042018,03052018 ])

file.to_csv("Data/file")


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

1 Ответ

1 голос
/ 04 октября 2019

IIUC, это должно сделать:

Вариант 1:

Менее эффективно, более читабельно:

def get_df():
    df=pd.DataFrame()
    for file in os.listdir():
        if file.endswith('.csv'):
            aux=pd.read_csv(file)
            df=df.append(aux)
    return df

А затем:

df=get_df()

Вариант 2:

Более эффективный объем памяти, менее читабельный:

def df_generator():

    for file in os.listdir():
        if file.endswith('.csv'):
            aux=pd.read_csv(file)
            yield aux

А затем:

generator=df_generator()
df = pd.DataFrame()
for table in generator:
    df = df.append(table)

Примечание: чтобы это работало как есть, скрипт имеетбыть ВНУТРИ папки с CSV. Иначе вам нужно добавить относительный путь к этой папке из папки, в которой будет находиться ваш скрипт.

Пример: если ваш скрипт находится в папке «Project» и внутри этой папки у вас есть папка »Таблицы "со всеми вашими CSV, вы делаете:

os.listdir('Tables/')
...