吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1572|回复: 38
收起左侧

[Python 原创] 一个简单的Excel表格按主列进行合并的方法

  [复制链接]
寡人的泡面 发表于 2024-3-10 19:53
本帖最后由 寡人的泡面 于 2024-3-10 20:07 编辑

[md]工作中遇到的问题,两个excel表需要合并,两个表有一个共同的主列,但是顺序不同且数量相差3000余条,举例如下:

表1

表1
这是表一
2.png 这是表二
3.png 合并后的效果
需要用的依赖库为:pandas;easygui;openpyxl
源码如下:
[Python] 纯文本查看 复制代码
import pandas as pd
import easygui as g
msg = '第一步:选择第一个需要合并的excel文件'+'\n'+'第二步:选择第二个需要合并的excel文件'+'\n'+'第三步:输入主列表名称'+'\n'+'第四步:选择输出文件(提前新建一个空表)'
g.msgbox(msg,title='欢迎使用EXCEL文件合并工具---by乘风')
title = '文件选择对话框'
file1 = g.fileopenbox(msg='第一步:选择第一个需要合并的excel文件',filetypes=['*.xlsx','*.xls'])
if file1 == None :
    exit()
file2 = g.fileopenbox(msg='第二步:选择第二个需要合并的excel文件',filetypes=['*.xlsx','*.xls'])
if file2 == None :
    exit()
id = g.enterbox(msg='第三步:输入主列表名称')
if id == None :
    exit()
out_file = g.fileopenbox(msg='第四步:选择输出文件(提前新建一个空表)',filetypes=['*.xlsx','*.xls'])
db1 = pd.read_excel(file1)
db2 = pd.read_excel(file2)
writer = pd.ExcelWriter(out_file,engine='openpyxl')
out = pd.merge(db1,db2,how='outer',on=id)
#how :outer为两表主列表并集;inner为主列表交集;lift以第一表db1为主;right以第二表 db2 为主
#on为主列名称,两个表的名称必须相同;或on=['学号','姓名']定义双主列表。
out.to_excel(writer,sheet_name='sheet')
writer.close()
g.msgbox(msg='已完成,请查看数据')


Excel表格合并.rar (18.62 KB, 下载次数: 32)
打包EXE下载:https://www.123pan.com/s/24CBjv-ycu3H.html


免费评分

参与人数 5吾爱币 +9 热心值 +5 收起 理由
0jiao0 + 1 + 1 谢谢@Thanks!
TimeCome + 1 + 1 谢谢@Thanks!
wulm + 1 + 1 太棒了
爱飞的猫 + 5 + 1 可以尝试把依赖放到 requirements.txt 内
supernox + 1 + 1 我很赞同!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

kklz123 发表于 2024-3-10 22:11
本帖最后由 kklz123 于 2024-3-10 22:13 编辑

excel自带函数也可以模拟类似效果(365版本),例:
[Asm] 纯文本查看 复制代码
=LET(
    arr, IFNA(
        VSTACK(
            HSTACK(Z2:Z9 & "", [学生成绩.xlsx]Sheet1!A2:A9, Z2:Z9 & "", [学生成绩.xlsx]Sheet1!B2:B9),
            [学生信息.xlsx]Sheet1!A2:C11
        ),
        ""
    ),
    key, INDEX(arr, , 2),
    REDUCE(
        B1:E1,
        SORT(UNIQUE(key)),
        LAMBDA(x, y, VSTACK(x, LET(a, FILTER(arr, y = key), IF(TAKE(a, 1) = "", TAKE(a, -1), TAKE(a, 1)))))
    )
)
微信截图_20240310221020.png
cxx0515 发表于 2024-3-10 21:38
sai609 发表于 2024-3-10 21:40
afti 发表于 2024-3-10 21:56
成功合并表格可以节约大量时间
yxnwh 发表于 2024-3-10 22:15
excel里面自带的宏命令就能够解决了,代码应该不超20行,没必要上python
panoeade 发表于 2024-3-10 22:22
我记得专门有个表格工具
13776507050 发表于 2024-3-10 22:30
谢谢你,感谢
 楼主| 寡人的泡面 发表于 2024-3-10 22:49
cxx0515 发表于 2024-3-10 21:38
有重名的也可以吗?

主列重名的没试过。。。
suxfei 发表于 2024-3-10 23:13
学下如何上Python、
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则 警告:本版块禁止灌水或回复与主题无关内容,违者重罚!

快速回复 收藏帖子 返回列表 搜索

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-5-15 15:31

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表