过滤一个 Excel 文件并将结果输出到另一个 Excel
Filter an Excel file and output the result into another Excel
我目前正在为我学校的一个俱乐部做一个小项目。这个想法是根据 class(大一、大二、大三和大四)过滤学生的 GPA(如果他们高于截止点)。
这是一个简单的例子;假设我有以下 .xlsx 文件:
因此,根据他们的学分,他们是 class 的一部分。如果他们有 x < 30
个学分,他们是新生,x =< 59 && x >= 30
他们是大二学生,x =< 89 && x >= 60
他们是大三学生,如果他们有 x >= 90
个学分,他们是大四学生。
因此每个 class 的 GPA 分界线都不同。这些是截止日期:
- (
x < 30
)新生:1.5
- (
x =< 59 && x >= 30
)大二:2.0
- (
x =< 89 && x >= 60
)初级:2.5
- (
x >= 90
)高级: 3.0
所以在我们的例子中,如果我们要过滤这些数据,我们的输出将是:
我一直在学习如何使用 xlsxwriter,但我不确定是否有更简单的方法来过滤这么简单的东西。
我只需要了解如何从此输入的 Excel 文件中读取数据并读取正确的列进行筛选。
这是我认为可以用于过滤的方法(只是我模拟的伪代码):
for row_line in credits_column:
grade_level = column_line[1] #This would be our Credits Column
#check the grade level
#Check if they're a Senior
if grade_level >= 90:
if gpa_level >= 3.0:
#Keep this row!
else:
#Hide/Delete this row!
#Check if they're a Junior
elif grade_level =< 89 && grade_level >= 60:
if gpa_level >= 2.5:
#Keep this row!
else:
#Hide/Delete this row!
elif grade_level =< 59 && grade_level >= 30:
if gpa_level >= 2.0:
#Keep this row!
else:
#Hide/Delete this row!
elif grade_level < 30:
if gpa_level >= 1.5:
#Keep this row!
else:
#Hide/Delete this row.
# Move on to the next worksheet row.
row += 1
如何正确抓取信用栏和 GPA 栏的信息,然后过滤?
您可以使用名为 xlrd 的模块。您可以使用以下命令安装 xldd:
pip install xlrd
以下是从 xlsx 文件中读取数据的步骤。我假设您知道文件中列的索引。对于本练习,我假设它们在 A、B 和 C 列中:
import xlrd
#First open the workbook
wb = xlrd.open_workbook('path to your file.xlsx')
#Then select the sheet. Replace the sheet1 with name of your sheet
sheet = wb.sheet_by_name('Sheet1')
#Then get values of each column. Excuse first item which is header
names = sheet.col_values(0)[1:]
credits = sheet.col_values(1)[1:]
GPA = sheet.col_values(2)[1:]
我目前正在为我学校的一个俱乐部做一个小项目。这个想法是根据 class(大一、大二、大三和大四)过滤学生的 GPA(如果他们高于截止点)。
这是一个简单的例子;假设我有以下 .xlsx 文件:
因此,根据他们的学分,他们是 class 的一部分。如果他们有 x < 30
个学分,他们是新生,x =< 59 && x >= 30
他们是大二学生,x =< 89 && x >= 60
他们是大三学生,如果他们有 x >= 90
个学分,他们是大四学生。
因此每个 class 的 GPA 分界线都不同。这些是截止日期:
- (
x < 30
)新生:1.5 - (
x =< 59 && x >= 30
)大二:2.0 - (
x =< 89 && x >= 60
)初级:2.5 - (
x >= 90
)高级: 3.0
所以在我们的例子中,如果我们要过滤这些数据,我们的输出将是:
我一直在学习如何使用 xlsxwriter,但我不确定是否有更简单的方法来过滤这么简单的东西。
我只需要了解如何从此输入的 Excel 文件中读取数据并读取正确的列进行筛选。
这是我认为可以用于过滤的方法(只是我模拟的伪代码):
for row_line in credits_column:
grade_level = column_line[1] #This would be our Credits Column
#check the grade level
#Check if they're a Senior
if grade_level >= 90:
if gpa_level >= 3.0:
#Keep this row!
else:
#Hide/Delete this row!
#Check if they're a Junior
elif grade_level =< 89 && grade_level >= 60:
if gpa_level >= 2.5:
#Keep this row!
else:
#Hide/Delete this row!
elif grade_level =< 59 && grade_level >= 30:
if gpa_level >= 2.0:
#Keep this row!
else:
#Hide/Delete this row!
elif grade_level < 30:
if gpa_level >= 1.5:
#Keep this row!
else:
#Hide/Delete this row.
# Move on to the next worksheet row.
row += 1
如何正确抓取信用栏和 GPA 栏的信息,然后过滤?
您可以使用名为 xlrd 的模块。您可以使用以下命令安装 xldd:
pip install xlrd
以下是从 xlsx 文件中读取数据的步骤。我假设您知道文件中列的索引。对于本练习,我假设它们在 A、B 和 C 列中:
import xlrd
#First open the workbook
wb = xlrd.open_workbook('path to your file.xlsx')
#Then select the sheet. Replace the sheet1 with name of your sheet
sheet = wb.sheet_by_name('Sheet1')
#Then get values of each column. Excuse first item which is header
names = sheet.col_values(0)[1:]
credits = sheet.col_values(1)[1:]
GPA = sheet.col_values(2)[1:]