python将新建df按两列分组后,分组的两个列名分别为表名和sheet名,如果表名和分组表名相同,批量写入原始excel中倒数第2个新SHEET
时间: 2023-06-12 20:02:22 浏览: 95
回答:
您好,感谢您对ChitGPT的使用。
关于您的问题,根据您的描述,您可以先将原始Excel读入到Python中,然后使用pandas库进行分组操作。具体步骤如下:
1. 使用pandas库读取原始Excel表格:
```python
import pandas as pd
df = pd.read_excel('原始表格.xlsx')
```
2. 按照表名和sheet名进行分组:
```python
grouped = df.groupby(['表名', 'sheet名'])
```
3. 遍历分组后的数据,并将每组数据写入到原始Excel表格的倒数第2个新sheet中:
```python
writer = pd.ExcelWriter('原始表格.xlsx', engine='openpyxl')
book = openpyxl.load_workbook('原始表格.xlsx')
writer.book = book
for name, group in grouped:
table_name, sheet_name = name
if table_name == sheet_name:
group.to_excel(writer, sheet_name='new_sheet', index=False)
```
这样,就可以将分组后的数据写入到原始Excel表格的倒数第2个新sheet中了。
希望这个回答能够帮到您。如果您还有其他问题,可以随时向我提问。
相关问题
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移动到表格列表的倒数第二个位置。
用python将新建df按两列分组后,分组的两个列名分别为表名和sheet名,批量写入现有excel中新建倒数第2个SHEET
您好!非常感谢您使用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。希望能对您有所帮助。如果您还有其他问题,可以随时提出。
阅读全文