我想用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文件自动执行代码?
答案 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))