python做excel表格代码_【编程】8行Python代码实现excel两个sheet表合并

欢迎关注我的专栏( つ•̀ω•́)つ【人工智能通识】

问题分析

怎么把两个sheet表的数据合并到一起?

先看问题。我们的excel文件有两个个sheet表,a和b。

fd9b57fdc05d

fd9b57fdc05d

这里存在着一些情况:

横向看,a和b里面的name人名有交叠也有互补。a里面7个人有Kaylin,b里面没有;b里面7个人有Gracie,a里面没有。

竖向看,a和b里面的栏目也有交叠和互补。a里是name,height,weight,age,b里面是name,age,bmi,fitness。

我们期望的结果是下图这样,把a和b以name为索引,a和b对应合并成一张8个人的表。

fd9b57fdc05d

可能方法

直接Excel自带的【数据-合并计算】工具,可以实现多个表的合并,并且能够对重复的列(比如a和b都有age列)进行求和计算。但缺点是不能处理字符串文字数据,fitness一列会丢失。

fd9b57fdc05d

使用Excle配套的power query工具,可以使用VBA编程实现这个效果。缺点微软没有为苹果mac下的excel提供这个工具,此外使用这个工具还要学习VB语法和SQL语法,也不容易。

使用Python的pandas来处理,功能足够强大,语法也简单。

使用Notebook的Pandas

先把数据读进来看一下。sheet_name参数指定读哪个表。

fd9b57fdc05d

同样读取b表看看。

fd9b57fdc05d

使用merge把两个表合并到一起,on是指定索引列名称,how='left'是以a表为基础,indicator是显示_merge列的情况。

fd9b57fdc05d

注意到出了两个age列,age_x和age_y。重建新的age列,优先使用age_y的值,如果是空NaN就是使用age_x的8。

fd9b57fdc05d

最后drop删除掉age_x和age_y两列,保存即可。

汇总所有代码共8行:

import pandas as pd

import numpy as np

df1 = pd.read_excel('./orgdata.xlsx', sheet_name='a', index_col=0)

df2 = pd.read_excel('./orgdata.xlsx', sheet_name='b', index_col=0)

df = pd.merge(df1, df2, on='name', how='left')

df['age'] = df.apply(lambda x: x['age_x']if pd.isna(x['age_y']) else x['age_y'],axis=1)

df = df.drop(columns=['age_x', 'age_y'])

df.to_excel('data.xls')

欢迎关注我的专栏( つ•̀ω•́)つ【人工智能通识】

每个人的智能新时代

如果您发现文章错误,请不吝留言指正;

如果您觉得有用,请点喜欢;

如果您觉得很有用,欢迎转载~

END

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值