看过来
《pandas 教程》 持续更新中,提供建议、纠错、催更等加作者微信: gairuo123(备注:pandas教程)和关注公众号「盖若」ID: gairuo。跟作者学习,请进入 Python学习课程。欢迎关注作者出版的书籍:《深入浅出Pandas》 和 《Python之光》。
本示例是解决在一个 Excel 中,有好多工作簿(sheet),如何在工作簿的每个工作表数据内都插入一列,列的内容为对应工作的名称。
我们的原始数据是一个 Excel 表格,可以通过 这儿 进行下载,它的样子是:
目前有三个工作簿(sheet),名称是企业的名称,需求是在每个工作簿中增加一列,值全部此名称。
本需求不要求保持原 Excel 的样式。
由于需求不要求保持原 Excel 的样式,我们可以直接使用 pandas 解决了,否则要用 openpyxl、xlwings 等专门处理 Excel 的 Python 库。
第一步可以先用 pd.read_excel()
读取 Excel,参数 sheet_name=None
时可以读取所有的工作簿(sheet),返回的是一个字典,键为工作簿名称,值为数据 DataFrame 结构。
接下来我们可用 pd.ExcelWriter()
将 DataFrame 写入多个 sheet 里,写的过程中可以增加所需要的列。
先读取 Excel,得到一个字典:
import pandas as pd
dfs = pd.read_excel('company.xls', sheet_name=None)
dfs
'''
{'乙企业': 栏目 7月份 前7个月
0 营业收入 30 192
1 营业成本 16 92
2 利润总额 28 200
3 所得税 2 14
4 净利润 52 372,
'丙企业': 栏目 7月份 前7个月
0 营业收入 23 106
1 营业成本 10 54
2 利润总额 13 52
3 所得税 2 9
4 净利润 11 43,
'甲企业': 栏目 7月份 前7个月
0 营业收入 15 96
1 营业成本 8 46
2 利润总额 7 50
3 所得税 1 7
4 净利润 6 43}
'''
再用 pd.ExcelWriter()
写入数据:
with pd.ExcelWriter('company-done.xlsx') as writer:
for sheet_name, df in dfs.items():
df['company'] = sheet_name
df.to_excel(writer, sheet_name=sheet_name, index=None)
最终生成的数据结果,打开后如下:
这样就完成了需求。
(完)
更新时间:2024-08-18 16:07:00 标签:pandas python excel 工作簿