Python按第一列拆分表 之后删除表的前2列 并去重 要求保留原表字体和格式
时间: 2024-03-15 10:44:20 浏览: 81
按列拆分工作表
好的,下面是具体的实现步骤:
1. 导入所需模块
```python
import pandas as pd
import openpyxl
from openpyxl.utils.dataframe import dataframe_to_rows
```
2. 读取 Excel 数据并按第一列拆分表
```python
# 读取 Excel 数据
df = pd.read_excel('your_file.xlsx', header=None)
# 按第一列拆分表
grouped = df.groupby(df[0])
```
3. 删除表的前两列并去重
```python
# 删除表的前两列并去重
for name, group in grouped:
# 删除前两列
group = group.iloc[:, 2:]
# 去重
group = group.drop_duplicates()
# 保存拆分后的表
# ...
```
4. 保留原表字体和格式并保存拆分后的表
```python
# 删除表的前两列并去重
for name, group in grouped:
# 删除前两列
group = group.iloc[:, 2:]
# 去重
group = group.drop_duplicates()
# 创建一个新的 workbook 和 worksheet
wb = openpyxl.Workbook()
ws = wb.active
# 将原表数据写入新的 worksheet
for r in dataframe_to_rows(group, index=False, header=False):
ws.append(r)
# 保留原表字体和格式
for i, row in enumerate(group.index, 1):
for j, col in enumerate(group.columns, 1):
cell = ws.cell(row=i, column=j)
cell.value = group.loc[row, col]
cell.font = df.loc[row, col]._style.font
cell.border = df.loc[row, col]._style.border
cell.fill = df.loc[row, col]._style.fill
cell.number_format = df.loc[row, col]._style.num_format
cell.protection = df.loc[row, col]._style.protection
cell.alignment = df.loc[row, col]._style.alignment
# 保存拆分后的表
wb.save(f"{name}.xlsx")
```
综上所述,您可以按照以上步骤实现您的需求。当然,具体的实现细节还需要您根据实际情况进行调整。
阅读全文