通过使用熊猫自动将多个xlsm文件转换为多个csv文件

时间:2018-12-03 09:00:25

标签: python pandas

我有300个原始数据(.xlsm),并希望提取有用的数据并将其转换为csv文件作为后续神经网络的输入,现在我尝试以10个数据为例来实现它们,我已成功提取了信息我需要,但我不知道如何将它们转换为具有相同名称的csv文件,对于单个数据,我们可以使用df.to_csv,但是对于所有数据呢?具有for功能?

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)

问题解决了。

Hint

1 个答案:

答案 0 :(得分:0)

最简单的方法是从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)

由于您已经具有要推入csv文件的excel df,只需将上述代码添加到循环中,然后将输出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)