用Python玩转Excel | 多表联合操作

2021-09-16 17:19:29 浏览数 (2)

在日常工作中,经常会遇到需要多个工作表联合操作的情况。比如,要过滤工作表A中的数据,但过滤条件在工作表B中,如果这些工作表都在同一个工作簿中,那么Excel提供了相应的方法进行操作;但如果这些工作表分布于不同的工作簿中,Excel就无能为力了,此时只能先将不同工作簿中的工作表整理到一个新的工作簿中,然后再进行操作,因此整个过程非常烦琐。使用Pandas则无须担心多个工作簿、多个工作表的情况,Pandas可以轻松将多个工作簿中的任意工作表读入,然后一同处理。

假设我们有三个表格,分别存放了学生的名字、学习的年龄、学生的分数三个Excel文件。并且三个表格中每一行数据都是相互对应的。现在我们想要获取年龄大于20岁且分数大于60分的学生的姓名。下面通过Pandas实现多表联合操作,完成这个任务。

代码语言:javascript复制
import pandas as pd

# 首先读取三个Excel文件中的数据
name = pd.read_excel('name.xlsx',sheet_name='name')
score = pd.read_excel('score.xlsx',sheet_name='score')
age = pd.read_excel('age.xlsx',sheet_name='age')

# 将多个表格的数据合并在一起
# 使用fillna方法将NaN都填充为0
tab1 = name.merge(score,how='left',on='ID').fillna(0)
tab1['分数'] = tab1['分数'].astype(int)
tab2 = tab1.merge(age,how='left',on='ID').fillna(0)
tab2['年龄'] = tab2['年龄'].astype(int)

# 获取满足条件的数据
result = tab2[(tab2['年龄'] >= 20) & (tab2['分数']>=60)]
print(result)

上述代码中,先将不同Excel文件对应的数据读入,随后通过merge方法将工作表两两合并。合并完成之后,通过条件轻松过滤满我们想要的数据了。

0 人点赞