利用Python进行Excel的合并(使用pandas)

利用Python进行Excel的合并(使用pandas)

在网上找了很多Python处理Excel的方法和代码,都不是很尽人意,所以自己综合网上各位大佬的方法,自己进行了优化,具体的代码如下。
博主也是新手一枚,代码肯定有很多需要优化的地方,欢迎各位大佬提出建议~
代码我自己已经用了一段时间,可以直接拿去用

主要功能

  1. 按行合并 ,即保留固定的表头(如前几行),实现多个Excel相同格式相同名字的表单按纵轴合并;
  2. 按列合并。 即保留固定的首列,实现多个Excel相同格式相同名字的表单按横轴合并;
  3. 表单集成 ,实现不同Excel中相同sheet的集成(即不汇总,仅集成到同一个新的Excel中)。此处的代码稍微改一下即可实现不同Excel中所有sheet的集成;
  4. 自动检测所需合并的sheet名称是否出现在所有的目标文件中,如果不是则予以提示
  5. sheet选择、表头选择、功能选择界面实现可视化
  6. 合并后进行简单的缺省值处理、格式处理
  7. 解决MacOS系统下文件目录中出现.DS_Store隐藏文件导致程序出错的bug。

用到的库

pandastkinterpathlibosxlrd

代码

import pandas as pd
import tkinter as tk
from tkinter import filedialog
import pathlib
import os
import xlrd

# 选择文件夹对话框,窗口交互,打开选择窗口
filedirectory = filedialog.askdirectory()
p1 = pathlib.Path(filedirectory)  # 该部分主要为了获取目标路径下的文件名
print(p1)
bookname1 = os.listdir(p1)  # 返回目标文件夹下的所有文件名
if ".DS_Store" in bookname1:
    bookname1.remove('.DS_Store')

# 删除文件名里的.xlsx
bookname = []
for n in bookname1:
    n1 = list(n)  # 把字符变成列表
    for i in range(5):  # 因为去除的是.XSLX,5个字符,可以根据实际需要修改
        n1.pop()  # 依次删除最后一个元素
    n2 = ''.join(n1)  # 把列表变成字符
    bookname.append(n2)

excles = p1.rglob('*.xlsx')  # 类似于os.work,能够返回目标路径下的文件路径,并且可以添加条件
excelarr = []
for eachexcel in excles:
    excelarr.append(eachexcel)  # 创建目标路径下特定文件名的列表

# 建立一个交互窗口
windows = tk.Tk()
windows.title('请提供如下信息')  # 设置文本框的标题
windows.geometry('1000x300')  # 设置界面的大小
# tk.Label(windows, text='你好!this is Tkinter', bg='green', font=('Arial', 12), width=30, height=2)
# 说明:bg为背景,font为字体,width为长,height为高,这里的长和高是字符的长和高,比如height=2,就是标签有2个字符这么高)
tk.Label(windows, text='请输入想要合并的sheet名称:').grid(row=0, column=0)  # label用来显示不可编辑的文本和图标(提示性文字)
tk.Label(wi
  • 9
    点赞
  • 67
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
### 回答1: 可以使用pythonpandas库,通过读取excel文件,并使用merge函数合并。具体步骤为: 1. 使用pandas的read_excel函数读取需要合并excel文件,并转化为dataframe类型。 2. 使用merge函数将需要合并的dataframe进行合并,根据合并所需的关键列,在on参数指定。 3. 将合并后的结果保存为需要的格式,如excel文件。 例子: ```python import pandas as pd # 读取需要合并excel文件 df1 = pd.read_excel('file1.xlsx') df2 = pd.read_excel('file2.xlsx') # 合并 merged_df = pd.merge(df1, df2, on='key_column') # 保存为excel merged_df.to_excel('merged_file.xlsx', index=False) ``` 其,key_column为需要合并的关键列。 ### 回答2: Pandas是一个扩展的Python库,它提供了许多功能来进行数据操作,其包括对Excel数据的合并Pandas的merge()函数提供了一种将多个Excel数据表合并为一个数据表的方法。下面是如何使用Pandas进行Excel数据表的合并操作的步骤。 1.导入Pandas库:首先,必须导入Pandas和NumPy库。Pandas库将用于数据分析和处理,而NumPy库将用于数组操作。 import pandas as pd import numpy as np 2.读入Excel文件:将要合并的所有Excel文件读入到Pandas DataFrame。可以使用read_excel方法读入数据。将excel文件读入为数据框。 df1=pd.read_excel("文件路径1") df2=pd.read_excel("文件路径2") 3.合并Excel文件使用Pandas的merge()函数将两个DataFrame合并为一个。可以使用类似于SQL inner join,left join,right join和outer join的类型来进行合并使用merge()函数完成合并。 merged_df=pd.merge(df1,df2,on="id",how="outer") 上述代码,id是两个数据框共有的行,outer join表示合并两个数据框并保留所有行,以最长的数据框的行为准。结果merged_df包含合并数据。 4.保存数据:最后,我们可以通过to_excel()函数将合并的数据保存为新Excel文件。 merged_df.to_excel("合并后的文件路径") 总之,使用Pandas的merge()函数可以非常方便地将多个Excel数据表合并为一个数据表,这将大大简化数据操作,提高数据分析的效率。 ### 回答3: PandasPython数据处理的一个强大工具,可用于读取、写入、合并处理各种数据格式,包括Excel文件。在Pandas,merge是一种合并数据的方法,可以在不同的DataFrame之间共享相同的列名,并将它们合并成一张表。 要在Pandas合并Excel文件,需要首先加载Excel文件使用Pandas库的read_excel函数可以读取Excel文件,它将Excel文件读取为Pandas DataFrame。 例如: import pandas as pd file1 = pd.read_excel('file1.xlsx') file2 = pd.read_excel('file2.xlsx') 此时可以使用merge函数将两个DataFrame对象进行合并。需要注意的是,在进行merge操作之需要确认两个DataFrame需要合并的列名,这样才能确保merge操作的正确性。 例如,合并file1和file2的'Student ID'列: merged_file = pd.merge(file1, file2, on='Student ID') 此时合并后的DataFrame将包含file1和file2的所有行,并且只保留包含共同的'Student ID'的行。如果有名称不同的列需要合并,可以使用left_on和right_on。 例如: merged_file = pd.merge(file1, file2, left_on='ID', right_on='Student ID') 在合并之后,可以使用to_excel方法将合并后的结果写入一个新的Excel文件,代码如下: merged_file.to_excel('merged_file.xlsx',index=False) 可以设置index参数将DataFrame的索引排除在输出文件之外,这是为了减轻文件大小并避免任何可能的索引问题。 总的来说,Pandas库的merge方法使合并Excel文件变得非常简单和容易,在任何需要合并多个Excel文件或多个DataFrame的情况下,这些步骤都是非常实用和有用的。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值