Объединить CSV-файлы в файлы XLSX на основе имени файла (pandas) - PullRequest
0 голосов
/ 30 января 2020

У меня есть несколько CSV с именами ' <3-буквенная строка> YYYY.csv '. Существует четыре версии <3-буквенной строки>, и я хочу отсортировать файлы CSV по четырем xlsx, каждая из которых идентифицируется этой трехбуквенной строкой.

Мой код:

import pandas as pd
import os
full_df = pd.DataFrame()
for filename in os.listdir('C:/Users/XXXXXX/ZZZZZZ'):
    if filename.endswith(".csv"): 
        print(filename)
        df = pd.read_csv(filename, skiprows=1, names=['ID','Units Sold','Retail Dollars'])
        df['Year'] = filename[-8:-4]
        full_df = pd.concat([full_df, df])
        full_df.to_excel(filename[0:3] + '.xlsx', index=False) 

Это делает четыре разных xlsxs, что я и хочу, но все они представляют собой смесь разных csvs.

Как мне сказать pandas сгруппировать их в четыре отдельных xlsxs в соответствии с именем файла? Сначала я хотел включить нарезку имени файла в предпоследнюю строку и создать четыре различных объединенных кадра данных full_df для отдельной записи, но я не уверен, как это сделать.

1 Ответ

1 голос
/ 30 января 2020
import pandas as pd
import os

def Get_Yo_Fantasy_Hennnnnyyyyy():
  full_df = pd.DataFrame()
  for filename in os.listdir("path"):
    if filename.endswith(".csv"):
        print(filename)
        df = pd.read_csv(
            filename,
            skiprows=1,
            names=["ID", "Units Sold", "Retail Dollars"])
        df["Year"] = filename[-8:-4]
        df["Type"] = filename[0:3]
        full_df = pd.concat([full_df, df])
        for i in list(full_df.Type.unique()):
            full_df[full_df.Type.str.contains(i)].to_excel(
                "{}".format(i) + ".xlsx", index=False)

 Get_Yo_Fantasy_Hennnnnyyyyy()
...