df1= pd.DataFrame({'序号': [1, 2, 3, 4], '表名': ['西部公司', '东部公司','东部公司', '西部公司'], 'sheet名': ['男', '女','男', '女'], '姓名': ['Malehhjkjkgkjjgkgjk', 'Femalestrehree', 'Femalegrhreherdfdfdfh', 'Maledfgfdgdfdg'], '金额': [2, 2, 2, 2] }) df2=pd.DataFrame ({'sheet名': ['男', '女','男', '女'], '表名': ['西部公司', '东部公司','东部公司', '西部公司','sheet名': ['女', '男','男', '女']]}) 用xlwt库把这两个DF按照表名列和sheet名分组后,导出到以表名列为表名、以sheet列为sheet名的xls
时间: 2023-06-12 12:07:40 浏览: 82
首先需要对两个DataFrame进行分组,然后循环遍历分组后的结果,将每个分组的数据写入对应的工作表中。代码如下:
```python
import pandas as pd
import xlwt
df1 = pd.DataFrame({
'序号': [1, 2, 3, 4],
'表名': ['西部公司', '东部公司', '东部公司', '西部公司'],
'sheet名': ['男', '女', '男', '女'],
'姓名': ['Malehhjkjkgkjjgkgjk', 'Femalestrehree', 'Femalegrhreherdfdfdfh', 'Maledfgfdgdfdg'],
'金额': [2, 2, 2, 2]
})
df2 = pd.DataFrame({
'sheet名': ['男', '女', '男', '女'],
'表名': ['西部公司', '东部公司', '东部公司', '西部公司'],
'金额': [1, 1, 1, 1]
})
# 分组
groups1 = df1.groupby(['表名', 'sheet名'])
groups2 = df2.groupby(['表名', 'sheet名'])
# 创建工作簿
book = xlwt.Workbook(encoding='utf-8')
# 遍历分组后的结果,写入数据
for name1, group1 in groups1:
sheet_name1, table_name1 = name1[1], name1[0]
sheet = book.add_sheet(sheet_name1)
sheet.write(0, 0, '姓名')
sheet.write(0, 1, '金额')
for i, row in group1.iterrows():
sheet.write(i+1, 0, row['姓名'])
sheet.write(i+1, 1, row['金额'])
for name2, group2 in groups2:
sheet_name2, table_name2 = name2[1], name2[0]
sheet = book.add_sheet(sheet_name2)
sheet.write(0, 0, '金额')
for i, row in group2.iterrows():
sheet.write(i+1, 0, row['金额'])
# 保存工作簿
book.save('output.xls')
```
这段代码会生成一个名为 `output.xls` 的 Excel 文件,其中包含了按照表名列和 sheet 名分组后的数据。注意,这里使用了 `xlwt` 库来写入 Excel 文件,因此需要提前安装该库。
阅读全文