前言代码总结
前言
今天处理了一个大的excel文件,从中筛选符合条件的数据,excel工具只能筛选两个条件太局限了,就用pandas处理了一下,也是学到了很多东西,在这里记录一下,方便查阅,如果有什么写的不对,不好的地方,希望大佬指正!
代码
代码量很少,就直接在代码中写注释了
import pandas as pd # 导入pandas包
from tqdm import tqdm # 这是个进度条的库,方便查看进度
'''
表格中的数据是这样的:GL-1(2024-02-01),RS(2023-02-06),DS(2025-07-01),RT-Ⅲ(2022-04-11),UT-Ⅱ(2023-04-17),MT-Ⅲ(2025-04-30),PT-Ⅲ(2025-04-30),TOFD-Ⅱ(2025-05-31)
有许多不需要的数据,把需要的数据放到一个列表中,去比较字符串
'''
conditions = ['DS', 'RS', 'GD-1', 'GD-2', 'GS'] # 这是需要筛选的信息
data = pd.read_excel('人员.xlsx', encoding='编码') # 读取表,如果编码总不行,可以用记事本打开表格,点另存为,重新选择编码,
data.fillna(value=0) # 用0填充空白值
headers = data.columns.values # 提取表头,因为要把筛选的数据放到新表中嘛
df = pd.Dataframe(columns=headers) # 新建一个表格,指定表头
block = data['证书'] # 筛选证书列,只有证书列的数据
for i in tqdm(block): # 遍历每一行的值
for condition in conditions: # 遍历筛选条件列表的值
if condition in i: # 进行字符串比较
if condition == 'GS': # 这里有个坑,原数据中有GSY,是包含GS的,就当GS处理了,但我们不需要
if 'GSY' in i: # 所以我把GS放到了最后,如果前边都没有,只剩GS了,同时GSY在原数据中,就丢掉,不要了
break
index = data[data['证书'] == i].index.tolist()[0] # 如果在GS之前就匹配到了,就查看当前行的索引值
info = data.iloc[index].values # 提取当前行的全部信息
df.loc[len(df)] = info # 在新表末尾添加一行数据
break # 找到一个值就跳出,避免重复找值
df.drop_duplicates(keep='first', inplace=True) # 去重,first只保留第一次出现的值
df.to_excel('人员-new.xlsx', index=0, encoding='编码') # 写入新表,index=0不写入索引值
总结
一步一步探索pandas的使用,如果上边的代码有啥问题的,有指教的,留言就行,定会回复。



