Преобразование нескольких файлов xlsm автоматически в несколько файлов CSV с помощью панд - PullRequest
0 голосов
/ 03 декабря 2018

У меня есть 300 необработанных данных (.xlsm), и я хочу извлечь полезные данные и превратить их в CSV-файлы в качестве входных данных для последующей нейронной сети, теперь я пытаюсь реализовать их с 10 данными, например, я успешно извлек информацию, чтоМне нужно, но я не знаю, как преобразовать их в CSV-файлы с тем же именем, для отдельных данных мы можем использовать df.to_csv, но как насчет всех данных?с для функции?

    import glob
    import pandas as pd
    import numpy as np
    import csv
    import os

    excel_files = glob.glob('../../Versuch/Versuche/RohBeispiel/*.xlsm') 
    directory = '/Beispiel'
    for files in excel_files:
        data = pd.read_excel(files)
        # getting the list of rows and columns you need
        list_of_dfs = pd.DataFrame(data.values[0:600:,12:26], 
                                   columns=data.columns[12:26]).drop(['Sauberkeit', 'Temparatur'], axis=1)
        # converting pandas dataframe columns to numeric: string into float
        cols = ['KonzA', 'KonzB', 'KonzC', 'TempA', 
                'TempB', 'TempC', 'Modul1', 'Modul2', 
                'Modul3', 'Modul4', 'Modul5', 'Modul6']
        list_of_dfs[cols] = list_of_dfs[cols].apply(pd.to_numeric, errors='coerce', axis=1)
        # Filling down from a column through missing data
        for fec in list_of_dfs[cols]:
            list_of_dfs[fec].fillna(method='ffill', inplace=True)       

        csvfilename = files.split('/')[-1].split('.')[0] + '.csv'
        newtempfile = os.path.join(directory,csvfilename)
        print(newtempfile)
        print(list_of_dfs.head(2))

проблема решена.

folder_name = 'Beispiel'
csvfilename = files.split('/')[-1].split('.')[0] + '.csv'  # change into csv files
newtempfile = os.path.join(folder_name, csvfilename)

# Verify if directory exists
if not os.path.exists(folder_name):
    os.makedirs(folder_name)  # If not, create it

print(newtempfile)
list_of_dfs.to_csv(newtempfile, index=False)

1 Ответ

0 голосов
/ 03 декабря 2018

Самый простой способ сделать это - получить имя файла из Excel, а затем использовать метод os.path.join (), чтобы сохранить его в нужном каталоге.

directory = "C:/Test"
for files in excel_files:
    csvfilename = (os.path.basename(file)[-1]).replace('.xlsm','.csv') 
    newtempfile=os.path.join(directory,csvfilename)

Поскольку вы ужеЕсли у вас есть файл Excel, который вы хотите вставить в CSV-файл, просто добавьте приведенный выше код в цикл и измените выходной CSV-файл на «newtempfile», и это должно быть сделано.

df.to_csv(newtempfile, 'Beispel/data{0}.csv'.format(idx))

Надеюсь, это поможет.:)

Обновлен код:

    cols = ['KonzA', 'KonzB', 'KonzC', 'TempA', 
                    'TempB', 'TempC', 'Modul1', 'Modul2', 
                        'Modul3', 'Modul4', 'Modul5', 'Modul6']
    excel_files = glob.glob('../../Versuch/Versuche/RohBeispiel/*.xlsm')
        for file in excel_files:
            data = pd.read_excel(file, columns = cols) # import only the columns you need to the dataframe
            csvfilename = (os.path.basename(files)[-1]).replace('.xlsm','.csv') 
            newtempfile=os.path.join(directory,csvfilename)

            # converting pandas dataframe columns to numeric: string into float
            data[cols] = data[cols].apply(pd.to_numeric, errors='coerce', axis=1)
            data[cols].fillna(method='ffill', inplace=True)
            data.to_csv(newtempfile).format(idx)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...