python根据文件名列表读excel数据

python根据文件名列表读excel数据,并写入csv文件

给定一个包括多个文件名的列表(文件列相同),读取数据并拼接在一起。

读excel

使用的包有

import csv
import  pandas  as pd
  1. 读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
  1. 读多个文件的数据
 #读多个表的数据
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

注意:这个地方我直接用“+”进行拼接。

  1. 调用
 if __name__=="__main__": 
    file_list=['excel/2018汇总.xlsx', 'excel/2019汇总_new.xlsx','excel/2020汇总_new.xlsx']
   
    #读2019的数据
    #read_data_all(file_list[1:2])
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值