前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >用Python玩转Excel | 多表联合操作

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

作者头像
TalkPython
发布2021-09-16 17:19:29
7100
发布2021-09-16 17:19:29
举报
文章被收录于专栏:TalkPythonTalkPython

在日常工作中,经常会遇到需要多个工作表联合操作的情况。比如,要过滤工作表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方法将工作表两两合并。合并完成之后,通过条件轻松过滤满我们想要的数据了。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-09-03,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 TalkPython 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档