python根据文件名列表读excel数据,并写入csv文件
给定一个包括多个文件名的列表(文件列相同),读取数据并拼接在一起。
读excel
使用的包有
import csv
import pandas as pd
- 读excel文件中全部数据
def readXlsx_all(path):
datas=[]
empty_data=[]
try:
sheet = pd.read_excel(path)
df = pd.DataFrame(sheet)
columns = df.shape[1]
#print(columns)
for row in sheet.index.values :
#总列数
#print(sheet.iloc[row])
flag=0
#判断数据是否为空
for i in range(6,columns):
temp=str(sheet.iloc[row, i])
#temp='nan'
#print(temp)
if temp != 'nan':
flag=-1
break
if flag==0:
empty_data.append(sheet.iloc[row])
else:
#切片
tem_list=list(sheet.iloc[row])
datas.append(tem_list[0:6])
except Exception as e:
print(e)
print(path,'空数据个数:',len(empty_data))
if empty_data is not None and len(empty_data)!=0:
#如果需要这个写csv的方法,请看我的下一篇博文
write_csv('excel/empty_data.csv',empty_data)
return datas
注意:由于excel中如果数据为空,是float的nan值,有很多判断方式,这里我偷懒,直接转为str类型进行比较:str(变量)。
这里补充一个读excel指定列的值
def readXlsx_colom(path,colom=[0,1,2,3,4,5]):
# 读取xlsx数据转换为字典
df = pd.read_excel(path) #读取xlsx中第一个sheet
#只读指定列
data = df.iloc[:,colom].values #读取指定列的所有行
#print(data)
return data
- 读多个文件的数据
#读多个表的数据
def read_all_data(path_list):
datas=[]
for path in path_list:
data=list(readXlsx_all(path))
print(len(data))
datas=datas+data
#print(datas)
return datas
注意:这个地方我直接用“+”进行拼接。
- 调用
if __name__=="__main__":
file_list=['excel/2018汇总.xlsx', 'excel/2019汇总_new.xlsx','excel/2020汇总_new.xlsx']
#读2019的数据
#read_data_all(file_list[1:2])