用python将新建df按两列分组后,分组的两个列名分别为表名和sheet名,批量写入现有excel中新建倒数第2个SHEET

时间: 2023-06-12 10:01:57 浏览: 35
您好!非常感谢您使用ChitGPT来咨询技术问题。关于您提出的问题,可以使用pandas库进行操作,代码示例如下: ```python import pandas as pd import openpyxl # 读取现有的Excel文件 wb = openpyxl.load_workbook('test.xlsx') # 新建一个DataFrame数据表 df = pd.DataFrame(data={'表名': ['表1', '表1', '表2', '表2'], 'sheet名': ['sheet1', 'sheet2', 'sheet1', 'sheet2'], '数据': [1, 2, 3, 4]}) # 分组,按照表名和sheet名进行分组 gb = df.groupby(['表名', 'sheet名']) # 获取分组后的dataframe for name, group in gb: # 找到要写入的Sheet sheet = wb.create_sheet(title=name[1], index=-1) # 将数据写入Sheet中 for idx, row in group.iterrows(): sheet.append((row['表名'], row['sheet名'], row['数据'])) # 保存Excel文件 wb.save('test.xlsx') ``` 以上代码将新建的DataFrame数据表按照表名和sheet名进行分组后,批量写入现有的Excel文件中倒数第2个SHEET。希望能对您有所帮助。如果您还有其他问题,可以随时提出。

相关推荐

好的,让我来回答您的问题。首先,您需要使用Python的pandas库进行数据分组,然后使用xlwt或openpyxl库将数据批量写入Excel中的倒数第二个sheet。以下是Python代码示例: python import pandas as pd import xlwt # 用于写入xls文件 from openpyxl import Workbook # 用于写入xlsx文件 # 读取数据 df = pd.read_excel('data.xlsx') # 按某一列分组 grouped = df.groupby('col') # 将每个分组写入Excel中的新sheet book = xlwt.Workbook() for name, group in grouped: sheet = book.add_sheet(name) # 以分组名称创建新sheet for i in range(len(group.columns)): sheet.write(0, i, group.columns[i]) # 将列名写入第一行 for j in range(len(group)): sheet.write(j+1, i, group.iloc[j,i]) # 将数据写入每一行中 # 将新sheet插入到倒数第二个位置 book.add_sheet('new_sheet', -1) # 将Excel保存到文件 book.save('result.xls') 如果您需要将数据写入“xlsx”格式的Excel文件,则可以使用openpyxl库。以下是使用该库的示例代码: python import pandas as pd from openpyxl import Workbook # 读取数据 df = pd.read_excel('data.xlsx') # 按某一列分组 grouped = df.groupby('col') # 将每个分组写入Excel中的新sheet book = Workbook() for name, group in grouped: sheet = book.create_sheet(name) # 以分组名称创建新sheet for i in range(len(group.columns)): sheet.cell(row=1, column=i+1, value=str(group.columns[i])) # 将列名写入第一行 for j in range(len(group)): sheet.cell(row=j+2, column=i+1, value=str(group.iloc[j,i])) # 将数据写入每一行中 # 将新sheet插入到倒数第二个位置 sheet = book.create_sheet('new_sheet', -2) # 将Excel保存到文件 book.save('result.xlsx') 注意,这些示例代码仅供参考,您可能需要根据您的具体数据格式和要求进行修改。
好的,我可以帮你解答这个问题。下面是代码实现: python import tkinter as tk import pandas as pd class TableProcessor: def __init__(self, master): self.master = master master.title("表格处理客户端") # 创建GUI界面的部件 self.textbox1 = tk.Entry(master, width=50) self.textbox2 = tk.Entry(master, width=50) self.button1 = tk.Button(master, text="导入表格", command=self.import_file) self.button2 = tk.Button(master, text="处理表格1", command=self.process_file1) self.button3 = tk.Button(master, text="处理表格2", command=self.process_file2) # 将部件放置在GUI界面上 self.textbox1.grid(row=0, column=0, padx=5, pady=5, columnspan=2) self.textbox2.grid(row=1, column=0, padx=5, pady=5, columnspan=2) self.button1.grid(row=2, column=0, padx=5, pady=5) self.button2.grid(row=2, column=1, padx=5, pady=5) self.button3.grid(row=3, column=0, padx=5, pady=5, columnspan=2) def import_file(self): # 导入表格并将路径存储到第一个文本框中 file_path = tk.filedialog.askopenfilename(filetypes=[("Excel files", "*.xlsx")]) self.textbox1.delete(0, tk.END) self.textbox1.insert(0, file_path) def process_file1(self): # 获取第4个工作表到最后一个工作表中的数据 file_path = self.textbox1.get() xls = pd.ExcelFile(file_path) df_list = [] for i in range(3, len(xls.sheet_names)): df = pd.read_excel(xls, sheet_name=i, usecols="B:C") df_list.append(df) result = pd.concat(df_list, ignore_index=True) # 将获取的数据依次填入第3个工作表的B4到最后一行,C4到最后一行中 file_path = file_path.replace(".xlsx", "_result.xlsx") writer = pd.ExcelWriter(file_path, engine="xlsxwriter") for i in range(len(xls.sheet_names)): df = pd.read_excel(xls, sheet_name=i) if i == 2: df["B4"] = result["B"] df["C4"] = result["C"] df.to_excel(writer, sheet_name=xls.sheet_names[i], index=False) else: df.to_excel(writer, sheet_name=xls.sheet_names[i], index=False) writer.save() # 在第二个文本框中显示结果 self.textbox2.delete(0, tk.END) self.textbox2.insert(0, file_path) def process_file2(self): # TODO: 实现处理表格2的代码 pass root = tk.Tk() app = TableProcessor(root) root.mainloop() 解释一下代码: 首先,我们定义了一个名为TableProcessor的类来实现表格处理客户端的功能。在__init__函数中,我们创建了GUI界面的部件,并将它们放置在GUI界面上。 在import_file函数中,我们使用filedialog模块来打开文件对话框,让用户选择要处理的表格文件。然后,我们将文件路径存储到第一个文本框中。 在process_file1函数中,我们使用pandas模块来处理表格。首先,我们使用ExcelFile类来打开表格文件,然后使用循环语句来获取第4个工作表到最后一个工作表中的数据。然后,我们将这些数据拼接成一个DataFrame对象,并将它写入到第3个工作表的B4到最后一行,C4到最后一行中。最后,我们将处理后的表格另存为一个新的文件,并将文件路径存储到第二个文本框中。 在process_file2函数中,我们可以实现处理表格2的代码。 最后,我们创建了一个Tk对象并运行主事件循环,来显示GUI界面。

最新推荐

全自动包装秤制袋机包装机_零件图_机械工程图_机械三维3D设计图打包下载.x_t

全自动包装秤制袋机包装机_零件图_机械工程图_机械三维3D设计图打包下载.x_t

个人推荐安装与卸载MySQL 的教学视频,(哔哩哔哩观看)

【MySQL 8.0保姆级下载、安装及配置教程(我妈看了都能学会)】 https://www.bilibili.com/video/BV12q4y1477i/?share_source=copy_web&vd_source=0a2910dc2f334e5a5bb7cf0d98486263

人工智能-项目实践-搜索引擎-分布式多店铺电商系统,使用技术:spring 、springmvc、mybatis、maven

分布式多店铺电商系统,使用技术:spring 、springmvc、mybatis、maven、html5、jquery、freemarker、Redis(缓存服务器)、Solr(搜索引擎)、Dubbo(调用系统服务)、Nginx(web服务器)、FastDFS(文件服务器)、Shiro(权限框架)、Zookeeper(分布式应用程序协调服务)

人工智能-项目实践-搜索引擎-利用hadoop等实现的搜索引擎

利用hadoop等实现的搜索引擎

Kubernetes安装自动化脚本

附件是我自己提炼的ubuntu安装k8s的自动化脚本和配置项

数据仓库数据挖掘综述.ppt

数据仓库数据挖掘综述.ppt

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire

springboot新闻信息管理系统开发技术文档更新

# 1. 系统概述 ## 1.1 项目背景 在当今信息爆炸的时代,新闻信息是人们获取信息的重要渠道之一。为了满足用户对新闻阅读的需求,我们决定开发一个新闻信息管理系统,该系统旨在提供便捷的新闻发布、浏览与管理功能,同时也要保证系统的性能和安全防护。 ## 1.2 系统目标与功能需求 系统的目标是构建一个高效、稳定、安全的新闻信息管理平台,主要包括但不限于以下功能需求: - 新闻信息的增加、修改、删除、查询 - 用户的注册、登录与权限控制 - 数据库性能优化与缓存机制实现 - 安全防护措施的设计与漏洞修复 ## 1.3 技术选型与架构设计 在系统设计中,我们选择采用Java

hive 分区字段获取10天账期数据

假设你的 Hive 表名为 `my_table`,分区字段为 `account_date`,需要获取最近 10 天的数据,可以按照以下步骤操作: 1. 首先,获取当前日期并减去 10 天,得到起始日期,比如: ``` start_date=$(date -d "10 days ago" +"%Y-%m-%d") ``` 2. 接下来,使用 Hive 查询语句从分区中筛选出符合条件的数据。查询语句如下: ``` SELECT * FROM my_table WHERE account_date >= '${start_date}' ```

生活垃圾卫生填埋场运营管理手册.pdf

生活垃圾卫生填埋场运营管理手册.pdf