使用熊猫读取和传递Excel文件名

时间:2019-01-03 14:42:42

标签: python excel pandas

我想用Pandas读取excel文件,删除标题行和第一列,然后将结果数据写入具有相同名称的excel文件中。我想对文件夹中的所有Excel文件执行此操作。我已经编写了用于数据读写的代码,但是在将数据保存到同名文件中时遇到了麻烦。我写的代码是这样的-

import numpy as np
import pandas as pd
import os
for filename in os.listdir ('./'):
    if filename.endswith ('.xlsx'):
        df = pd.read_excel ('new.xlsx', skiprows=1)
        df.drop (df.columns [0], axis=1, inplace=True)
        df.to_csv ('new.csv', index=False)    

如何为同一文件夹中的所有excel文件自动执行代码?

2 个答案:

答案 0 :(得分:2)

在函数filename中使用变量read_excel,然后通过format创建新文件名,并可以使用DataFrame.iloc删除第一列-选择所有没有第一列的列:< / p>

for filename in os.listdir ('./'):
    if filename.endswith ('.xlsx'):
        df = pd.read_excel (filename, skiprows=1)
        df.iloc[:, 1:].to_csv('new_{}.csv'.format(filename), index=False) 

使用glob的另一种解决方案,可以指定扩展名:

import glob

for filename in glob.glob('./*.xlsx'):
    df = pd.read_excel (filename, skiprows=1)
    df.iloc[:, 1:].to_csv('new_{}.csv'.format(filename), index=False)   
    #python 3.6+    
    #df.iloc[:, 1:].to_csv (f'new_{filename}.csv', index=False)   

答案 1 :(得分:0)

请尝试以下以读取多个文件,如下所示:

import pandas as pd
import glob

# Read multiple files into one dataframe along with pandas `concat`
# if you have path defined like `/home/data/` then you can use `/home/data/*.xlsx` otherwise you directly mention the path.

df = pd.concat([pd.read_excel(files, sep=',', index=False, skiprows=1) for files in glob.glob("/home/data/*.xlsx")])

替代: 将多个文件读入一个数据帧

all_Files = glob.glob('/home/data/*.xlsx')

df = pd.concat((pd.read_excel(files, sep=',', index=False, skiprows=1) for files in all_Files))
相关问题