前言:
这次是想对excel的数据进行筛选功能,减轻一些数据负担,虽然excel自带了筛选功能,但是一个是需要一次次点击,另外若是存在多个数据,那么就会发现你所做的操作又重复又无聊。
数据格式:
需求:
提取5,6,11这三列,对于力的大小进行范围筛选,要求是力是200-450,每次提升的距离为1,并且间距为+-0.1,拿200来说,也就是[199.9,200.1],不断往上递增。
代码实现:
import numpy as np
import pandas as pd
import os
# 读取所有excel所在文件夹地址
filePath = "所有excel所在文件夹地址"
# 保存所有筛选excel的文件夹地址
outPath = "保存所有筛选excel的文件夹地址"
for file in os.listdir(filePath):
# 获取文件夹中的csv文件名
file_csv = filePath + file
# print(file_csv)
# 读取文件的第5、6、11列
df = pd.read_excel(file_csv, usecols=[5, 6, 11])
# 提取第一行之后的数据,因为要删掉第一行乱七八糟的东西
df = df.iloc[1:]
# print(df[:10])
# 筛选
sift = pd.DataFrame()
# out=pd.concat([new,new2],axis=0)
# print(out)
# out.to_excel('F:/database/matou/data/1-2-a-r_sift.xlsx')
for i in range(200, 451):
# 筛选条件是[200,450],间距为+-0.1
new = df.loc[(df['力'].astype(float) >= (i - 0.1)) & (df['力'].astype(float) <= (i + 0.1))]
sift = pd.concat([sift, new], axis=0)
print(sift)
out = "sift_" + file
sift.to_excel(outPath + out)