python将df按两列分组后,分组的两个列名分别为表名和sheet名,如果原始和分组列名相同,批量写入原始excel中倒数第2个新SHEET
时间: 2023-06-12 14:02:27 浏览: 163
,该怎么实现呢?
可以使用pandas库的groupby函数进行分组,然后使用ExcelWriter类进行写入操作。具体步骤如下:
1. 读取原始excel文件,将数据存储在一个DataFrame对象中。
2. 对DataFrame对象按两列进行分组,即按表名和sheet名进行分组。可以使用groupby函数实现。
3. 遍历分组后的结果,将每个分组写入一个新的sheet中。
4. 将新的excel文件保存到原始文件所在的位置。
下面是一个简单的示例代码:
```
import pandas as pd
# 读取原始excel文件
df = pd.read_excel('原始文件.xlsx')
# 按表名和sheet名进行分组
groups = df.groupby(['表名', 'sheet名'])
# 创建ExcelWriter对象
writer = pd.ExcelWriter('新文件.xlsx')
# 遍历分组后的结果,逐个写入sheet
for name, group in groups:
# 将分组写入一个新的sheet中
group.to_excel(writer, sheet_name=name)
# 将新的excel文件保存到原始文件所在的位置
writer.save()
```
注意:在实际使用中,需要根据实际情况修改代码中的列名和文件名等参数。同时,需要确保原始文件在代码执行时未被其他程序占用。
相关问题
python将df按两列分组后,分组的两个列名分别为表名和sheet名,如果表名和分组表名相同,批量写入原始excel中倒数第2个新SHEET
好的,我理解您的问题。您可以使用pandas库中的groupby函数来按照两个列进行分组,并且使用循环结构来写入excel的新sheet中。
具体的代码如下所示:
```
import pandas as pd
import openpyxl
from openpyxl import Workbook
# 读取原始excel文件
df = pd.read_excel('input.xlsx')
# 按照表名和sheet名进行分组
grouped = df.groupby(['表名', 'sheet名'])
# 创建新的excel文件
wb = Workbook()
ws = wb.active
# 循环对每个分组进行写入操作
for name, group in grouped:
# 如果表名和分组表名相同,则写入到倒数第2个新sheet中
if name[0] == name[1]:
ws = wb.create_sheet(index=-1)
ws.title = name[0]
for row in group.iterrows():
ws.append(row[1].tolist())
# 保存excel文件
wb.save('output.xlsx')
```
希望我的回答可以帮助您解决问题。如果您有任何其他问题,请随时提出。
python将新建df按两列分组后,分组的两个列名分别为表名和sheet名,如果原始excel表名和分组表名相同,批量写入原始excel中倒数第2个新SHEET
可以用pandas库中的groupby方法实现该操作。具体步骤如下:
1. 读取原始Excel文件并将其转换为一个 pandas 的 DataFrame。
2. 使用 groupby 方法按照表名和sheet名进行分组。
3. 遍历每个分组,并将其写入 Excel 文件的倒数第二个新SHEET中。
下面是示例代码:
```
import pandas as pd
# 读取原始Excel文件
df = pd.read_excel('original.xlsx')
# 按照表名和sheet名进行分组
groups = df.groupby(['表名', 'sheet名'])
# 遍历每个分组,并将其写入Excel文件的倒数第二个新SHEET中
with pd.ExcelWriter('result.xlsx', engine='openpyxl', mode='a') as writer:
book = writer.book
sheet_names = book.sheetnames
sheet_index = len(sheet_names) - 1
for name, group in groups:
sheet_name = f"{name[0]}_{name[1]}"
if sheet_name in sheet_names:
sheet_names.remove(sheet_name)
group.to_excel(writer, sheet_name=sheet_name, index=False)
writer.book.worksheets = writer.book.worksheets[-1:] + writer.book.worksheets[:-1]
```
这段代码会将分组后的数据依次写入 Excel 文件的倒数第二个新SHEET中,并将新SHEET移动到表格列表的倒数第二个位置。
阅读全文
相关推荐














