Добавить несколько CSV на одном листе CSV во вкладках с помощью панд - PullRequest
0 голосов
/ 25 мая 2018

У меня есть несколько CSV-файлов, скажем, a.csv, b.csv.Я хочу, чтобы a.csv и b.csv в новом c.csv.Оба новых CSV должны быть во вкладках внутри, как есть.Я просто хочу добавить оба CSV во вкладках.Есть ли какой-нибудь короткий способ сделать это в пандах?У меня есть код ниже со мной, но он не дает никакого вывода, однако его выполнение.Пробовал проверять несколько сообщений в stackoverflow, но как-то у меня не получилось нужного вывода.Пожалуйста, помогите мне с лучшим решением.

folders=next(os.walk('.'))[1]
for host in folders:
    Path=os.path.join(os.getcwd(),host)                    
    all_files = glob.glob(os.path.join(Path, "*.csv"))     
    df_from_each_file = (pd.read_csv(f) for f in all_files)
    df   = pd.concat(df_from_each_file, ignore_index=True)
    df.to_csv('c.csv,' index=False)

1 Ответ

0 голосов
/ 27 мая 2018

Файл CSV на самом деле представляет собой только один лист.Файл Excel xlsx поддерживает листы.Панд можно заставить писать прямо в файл Excel, используя ExcelWriter.Что-то вроде следующего должно сделать то, что вам нужно:

import pandas as pd
import xlsxwriter
import glob
import os

writer = pd.ExcelWriter('multi_sheet.xlsx', engine='xlsxwriter')
folders = next(os.walk('.'))[1]

for host in folders:
    Path = os.path.join(os.getcwd(), host)

    for f in glob.glob(os.path.join(Path, "*.csv")):
        print(f)
        df = pd.read_csv(f)
        df.to_excel(writer, sheet_name=os.path.basename(f)[:31])

writer.save()

Для каждого файла CSV, найденного в ваших папках, будет создан новый лист Excel.Имя листа - это имя файла CSV, например, a.csv будет иметь имя листа a.

Примечание. В Excel для имени листа установлено ограничение в 31 символ.

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