python将df按两列分组后,分组的两个列名分别为表名和sheet名,批量写入写入原有excel中倒数第2个新SHEET
时间: 2024-05-01 18:19:38 浏览: 173
可以使用 pandas 库和 openpyxl 库。首先用 pandas 将 excel 文件读入为 DataFrame,然后使用 groupby() 方法按照表名和sheet名进行分组,得到一个以表名和sheet名为多级索引的 DataFrame。接着,通过 openpyxl 打开 excel 文件,创建一个新的 Sheet,并设置名称。最后,将分组后的数据逐行写入到新的 Sheet 中即可。
以下是示例代码,供参考:
```python
import pandas as pd
from openpyxl import load_workbook
# 读入原有的excel文件
file_name = 'example.xlsx'
df = pd.read_excel(file_name)
# 按照表名和sheet名进行分组
grouped = df.groupby(['表名', 'sheet名'])
# 打开excel文件,并创建新的sheet
book = load_workbook(file_name)
writer = pd.ExcelWriter(file_name, engine='openpyxl')
writer.book = book
writer.sheets = dict((ws.title, ws) for ws in book.worksheets)
new_sheet_name = book.worksheets[-2].title + '_new'
writer.book.create_sheet(title=new_sheet_name)
# 循环将各个分组数据逐行写入新的sheet
for group_name, group in grouped:
sheet_name, table_name = group_name
worksheet = writer.book[new_sheet_name]
worksheet.append([table_name, sheet_name])
group.to_excel(writer, sheet_name=new_sheet_name, startrow=worksheet.max_row, index=False, header=False)
# 保存并关闭文件
writer.save()
```
注:需要注意的是,如果分组后数据太多,可能无法一次性写入到新的 Sheet 中。此时需要进行分批写入。
阅读全文