pandas 批量读取表格并作数据清理

import os
import pandas as pd
filelist = []
import openpyxl
#pandas之能读取xsl,需要读取xslx需要导入openpyxl
list=[]
bad_file =[]
#step_df = pd.DataFrame()
#from openpyxl import load_workbook
#遍历目录下的所有excel文件
for root, dirs, files in os.walk("D:/nlp\gpt2_cpu\datas", topdown=False):
    for name in files:
        try:
            #获取文件绝对地址
            str = os.path.join(root, name)
            print(str)
            #读取excel文件
            df = pd.read_excel(str, header=None)
            print("read df done")
            #获取列数据
            major = df[4][2:]
            level = df[7][2:]
            course = df[9][2:]
            must = df[12][2:]
            year = df[13][2:]

            #行拼接
            list_name = [major,level,course,must,year]
            #ignore_index = True  清除现有索引并将其重置,默认为False
            #.drop_duplicates() 删除重复行
            step_df = pd.concat(list_name,axis=1,ignore_index = True).drop_duplicates()
            print(step_df[2])

            list.append(step_df)
        except:
            bad_file.append(name)
            print(name)
#列(多表)拼接
result_df = pd.concat(list,ignore_index = True)
#result_df.columns = [major,level,course,must,year]
#添加列名
result_df.columns = ['major','level','course','must','year']
'''
正则匹配串前加了r就是为了使得里面的特殊符号不用写反斜杠了。
[ ]具有去特殊符号的作用,也就是说[(]里的(只是平凡的括号
正则匹配串里的()是为了提取整个正则串中符合括号里的正则的内容

'''

#将空格及内部内容转换成空格
#result_df['course'] = result_df['course'].replace(r'(...)','')
# 将前面的大写字母和数字组成的课程码删除
result_df['course'].replace(r'^[A-z]+[0-9]+','',inplace=True,regex=True)
#删除括号及括号内内容,加了?是最小匹配,不加是贪婪匹配
result_df['course'].replace(r'\s[(](.*)[)]?.','',inplace=True,regex=True)
#将后面的课程码 数字去掉 1 2
result_df['course'].replace(r'\s[0-9].*$','',inplace=True,regex=True)
#将后面的课程码 A B及之后的内容去掉
result_df['course'].replace(r'\s[A-Z]\s.*$','',inplace=True,regex=True)
#去掉 :
result_df['course'].replace(r':','',inplace=True,regex=True)
#将'or' 换成空格,然后后面删除
result_df['course'].replace('or','',inplace=True)
#去除‘-’ 及后面的学分
result_df['course'].replace(r'[-].*','',inplace=True,regex=True)

#去除有空值的行
result_df = result_df.dropna()
print(result_df.shape)
print(bad_file)
#保存数据到csv表格
result_df.to_csv("result.csv")





 

使用pandas挨个读取表格第一列数据的方法是通过pandas的read_excel函数来实现。具体的代码如下所示: ```python import pandas as pd # 读取Excel文件 data = pd.read_excel("文件路径文件名") # 获取第一列数据 first_column = data.iloc\[:, 0\] # 打印第一列数据 print(first_column) ``` 在这段代码中,我们首先使用`pd.read_excel`函数读取Excel文件,并将数据存储在`data`变量中。然后,通过`data.iloc\[:, 0\]`来获取第一列的数据,其中`iloc`函数用于按位置选择数据。最后,我们可以通过打印`first_column`来查看第一列的数据。 #### 引用[.reference_title] - *1* *3* [python中用pandas读写excel表格,根据关键字查找填表(类似vlookpup)](https://blog.csdn.net/qq_29457059/article/details/115696256)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [cfile read 最大读取限制_pandas数据处理:常用却不甚了解的函数,pd.read_excel()](https://blog.csdn.net/weixin_39558521/article/details/110417142)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值