目录

环境安装:

多行表头

修改excel,表头重复的会自动加小数点

修改excel,解决表头重复的问题

4、指定读取格式

pandas to_excel 修改excel样式以及格式

实现条件格式:

条件格式测试可以用:


环境安装:

pip install pandas

pip install openpyxl

样式:

pip  install Jinja2

pip install xlsxwriter

多行表头

使用pandas导出excel表格的时候表头可能会出现类似下图这种表头

设计表头数据如下即可

colums = [("1", "1.1"), ("1", "1.2"), ("1", "1.3"), ("2", "2.1"), ("2", "2.2"), ("2", "2.3")]
df.columns = pd.MultiIndex.from_tuples(columns)

这样ok了

原文链接:https://blog.csdn.net/yixinluobo/article/details/120561765

1、pandas写入excel多级表头,采用笛卡尔积方法#写入header2多级表头

array=[[875,76750,123,12356],[876,67543,124,98765],[877,98076,125,65432]]
header2=pd.DataFrame(array,index=['1','2','3'])
header2.columns=pd.MultiIndex.from_product([['jd','tb'],['销量','销售额']])header2.index.name='月份'
print(header2)
header2.to_excel('header2.xlsx')

写入excel后表头和内容中间会多出一行,此项还未解决。

2、多级索引方法:采用zip函数

#多级索引
arrays = [["bar", "bar", "baz", "baz", "foo", "foo", "qux", "qux"],["one", "two", "one", "two", "one", "two", "one", "two"]]
tuples = list(zip(*arrays))
index = pd.MultiIndex.from_tuples(tuples)
print(index)

3、to_excel与ExcelWriter()主要不同之处:
to_excel只能写入一个sheet;
ExcelWriter()可以同时写入多个sheet。

df1=pd.DataFrame({'日期':[dt.datetime(2021,1,1),dt.datetime(2021,1,2)],'销量':[23,45]
})
print(df1)
df2=pd.DataFrame({'日期':[dt.datetime(2021,5,1),dt.datetime(2021,5,2)],'销量':[145,786]
})
df2.index=['a','b']
df2.index.name='货号'  #注意df2的索引顺序不能换,先确定索引值,后确定索引列标题
print(df2)
#ExcelWriter可以写入多个sheet,to_excel只能写入一个sheet
with pd.ExcelWriter('tbb.xlsx',datetime_format='YYYY-MM-DD') as writer:df1.to_excel(writer,sheet_name='2020年',index=False)df2.to_excel(writer,sheet_name='2021年')

原文链接:https://blog.csdn.net/weilansky91/article/details/116084236

修改excel,表头重复的会自动加小数点

if __name__ == '__main__':import pandas as pdexcel_name = r"C:\Users\ThinkPad\Desktop\tmp\你好2!.xlsx"column_str = 'g'sheet_name = 'Sheet1'df_excel= pd.read_excel(excel_name, sheet_name=sheet_name,header=0)start=time.time()cls_header = [chr(i)  for i in range(97, 123)]# with pd.ExcelWriter(excel_name, datetime_format='YYYY-MM-DD') as writer:data2=[]col_index=cls_header.index(column_str.lower())+1for index, data in enumerate(df_excel.itertuples()):data2.append(pd.Series(data[1:], index=df_excel.columns))if data[col_index]>1:for i in range(int(data[col_index])):data2.append(pd.Series(['' for i in range(len(df_excel.columns))], index=df_excel.columns))print("get file exists time", round(time.time() - start,2),'s')gdp4 = pd.concat(data2, axis=1)df_label = gdp4.Twith pd.ExcelWriter(excel_name) as writer:df_label.to_excel(writer, sheet_name,index=False)

修改excel,解决表头重复的问题

解决方法:读取时候不要表头,自动会出现计数表头,保存也不要表头

会丢失格式信息

if __name__ == '__main__':import pandas as pdexcel_name = r"C:\Users\ThinkPad\Desktop\tmp\你好2!.xlsx"column_str = 'g'sheet_name = 'Sheet1'df_excel= pd.read_excel(excel_name, sheet_name=sheet_name,header=None)start=time.time()cls_header = [chr(i)  for i in range(97, 123)]# with pd.ExcelWriter(excel_name, datetime_format='YYYY-MM-DD') as writer:data2=[]col_index=cls_header.index(column_str.lower())+1for index, data in enumerate(df_excel.itertuples()):data2.append(pd.Series(data[1:], index=df_excel.columns))if data[col_index]>1:for i in range(int(data[col_index])):data2.append(pd.Series(['' for i in range(len(df_excel.columns))], index=df_excel.columns))print("get file exists time", round(time.time() - start,2),'s')gdp4 = pd.concat(data2, axis=1)df_label = gdp4.Twith pd.ExcelWriter(excel_name) as writer:df_label.to_excel(writer, sheet_name,index=False,header=None)

4、指定读取格式

pd.read_excel('fake2excel.xlsx', index_col=0, dtype={'age': float})

在对数据处理精度要求比较高或者速度要求比较快的情况下。

pd.read_excel('fake2excel.xlsx', index_col=0, dtype={'age': float})  # 使用dtype,指定某一列的数据类型。

结果如下图所示:

  • 我们添加了一列:年龄,本来是整数,但是指定float类型之后,读取出来成了小书。

  • 这种读取,更适合对数据有特殊要求的情况,例如:金融行业。

pandas to_excel 修改excel样式以及格式

转自:

pandas to_excel 修改excel样式以及格式 - 冻雨冷雾 - 博客园

# -*- coding: utf-8 -*-
"""
Created on Fri Oct 29 11:29:39 2021@author: tianwz"""import pandas as pd
from datetime import datetime,timedelta
import timetime_now=datetime.now()
time_now=time_now.strftime("%Y-%m-%d")
df_excel=pd.read_excel('D平台项目三电售后问题管控表_分类结果_'+time_now+'.xlsx',sheet_name=None)
writer = pd.ExcelWriter('D平台项目三电售后问题管控表_分类结果_'+time_now+'格式处理.xlsx') # 此处engine="xlsxwriter"for sheet_name in df_excel.keys():print('正在定制: '+sheet_name)df=pd.read_excel('D平台项目三电售后问题管控表_分类结果_'+time_now+'.xlsx',sheet_name=sheet_name,index_col=0)df=df.drop('发生时间',axis=1)workbook = writer.book# percent_fmt = workbook.add_format({'num_format': '0.00%'})# amt_fmt = workbook.add_format({'num_format': '#,##0'})border_format = workbook.add_format({'border': 1})# example_fmt = workbook.add_format({'bold':True,'font_name':u'阿里巴巴普惠体','font_color':'red','font_strikeout':True,#                                 'align': 'center', 'valign': 'vcenter','underline':True})# date_fmt = workbook.add_format({'bold': False, 'font_name': u'阿里巴巴普惠体', 'num_format': 'yyyy-mm-dd'})# date_fmt1 = workbook.add_format({'bold': True, 'font_size': 10, 'font_name': u'阿里巴巴普惠体', #                                  'num_format': 'yyyy-mm-dd', 'bg_color': '#9FC3D1',#                                  'valign': 'vcenter', 'align': 'center'})highlight_fmt = workbook.add_format({'bg_color': '#FFD7E2', 'num_format': '0.00%'}) l_end = len(df.index) + 2 # 表格的行数,便于下面设置格式df.to_excel(writer, sheet_name=sheet_name, encoding='utf8', header=False, index=False,startrow=1)# startcol=0, startrow=2worksheet1 = writer.sheets[sheet_name]fmt = workbook.add_format({"font_name": u"阿里巴巴普惠体","font_size":9,'valign': 'vcenter','align': 'center'})for col_num, value in enumerate(df.columns.values):worksheet1.write(0, col_num, value, fmt)  #列名称写入# 设置列宽以及格式worksheet1.set_column('A:T',10, fmt)worksheet1.set_column('A:A',8, fmt)worksheet1.set_column('B:B',4, fmt)worksheet1.set_column('C:C',7, fmt)worksheet1.set_column('D:D',3, fmt)worksheet1.set_column('E:E',2, fmt)worksheet1.set_column('I:I',2, fmt)worksheet1.set_column('H:H',6, fmt)worksheet1.set_column('K:K',7, fmt)worksheet1.set_column('L:L',6, fmt)fmt = workbook.add_format({"font_name": u"阿里巴巴普惠体","font_size":9,'valign': 'vcenter','align': 'left'})worksheet1.set_column('J:J',40, fmt)worksheet1.set_column('P:P',30, fmt)# 设置具体的样式规则fmt = workbook.add_format({"font_name": u"阿里巴巴普惠体","font_size":9,'bg_color': '#C5D9F1'})worksheet1.conditional_format('A1:B1', {'type': 'text', 'criteria': 'containing', 'value': '', 'format': fmt})fmt = workbook.add_format({"font_name": u"阿里巴巴普惠体","font_size":9,'bg_color': '#DAEEF3'})worksheet1.conditional_format('C1:I1', {'type': 'text', 'criteria': 'containing', 'value': '', 'format': fmt})worksheet1.conditional_format('K1:O1', {'type': 'text', 'criteria': 'containing', 'value': '', 'format': fmt})worksheet1.conditional_format('Q1:S1', {'type': 'text', 'criteria': 'containing', 'value': '', 'format': fmt})fmt = workbook.add_format({"font_name": u"阿里巴巴普惠体","font_size":9,'bg_color': '#FAF0E7'})worksheet1.conditional_format('J1:J%d' % l_end, {'type': 'text', 'criteria': 'containing', 'value': '', 'format': fmt})worksheet1.conditional_format('P1:P%d' % l_end, {'type': 'text', 'criteria': 'containing', 'value': '', 'format': fmt})note_fmt = workbook.add_format({'bold':True,'font_name':u'阿里巴巴普惠体','font_color':'red','font_strikeout':False,'align': 'center', 'valign': 'vcenter','underline':True})note_fmt1 = workbook.add_format({'bold':False,'font_name':u'阿里巴巴普惠体','font_color':'orange','font_strikeout':False,'align': 'center', 'valign': 'vcenter','underline':False})note_fmt2 = workbook.add_format({'bold':False,'font_name':u'阿里巴巴普惠体','font_color':'gray','font_strikeout':True,'align': 'center', 'valign': 'vcenter','underline':False})note_fmt3 = workbook.add_format({'bold':True,'font_name':u'阿里巴巴普惠体','font_color':'#a7324a','font_strikeout':False,'align': 'center', 'valign': 'vcenter','underline':2})# worksheet1.conditional_format('H2:H%d' % l_end, {'type': 'formula', 'criteria': '', 'format': note_fmt})# worksheet1.conditional_format('A2:A%d' % l_end, {'type': 'cell', 'criteria': '=', 'value': 38, 'format': note_fmt})worksheet1.conditional_format('A2:A%d' % l_end, {'type': 'text', 'criteria': 'containing', 'value': '新发问题', 'format': note_fmt})worksheet1.conditional_format('A2:A%d' % l_end, {'type': 'text', 'criteria': 'containing', 'value': '历史问题', 'format': note_fmt1})worksheet1.conditional_format('A2:A%d' % l_end, {'type': 'text', 'criteria': 'containing', 'value': '外部因素', 'format': note_fmt2})worksheet1.conditional_format('A2:A%d' % l_end, {'type': 'text', 'criteria': 'containing', 'value': '首发问题', 'format': note_fmt3})note_fmt = workbook.add_format({'bold':False,'font_name':u'阿里巴巴普惠体','font_color':'white','font_strikeout':False,'align': 'center', 'valign': 'vcenter','underline':False,'bg_color':'#FF0000'})note_fmt1 = workbook.add_format({'bold':False,'font_name':u'阿里巴巴普惠体','font_color':'black','font_strikeout':False,'align': 'center', 'valign': 'vcenter','underline':False,'bg_color':'yellow'})note_fmt2 = workbook.add_format({'bold':False,'font_name':u'阿里巴巴普惠体','font_color':'black','font_strikeout':False,'align': 'center', 'valign': 'vcenter','underline':False,'bg_color':'#92D050'})note_fmt3 = workbook.add_format({'bold':False,'font_name':u'阿里巴巴普惠体','font_color':'black','font_strikeout':False,'align': 'center', 'valign': 'vcenter','underline':False,'bg_color':'#00B050'})worksheet1.conditional_format('C2:C%d' % l_end, {'type': 'text', 'criteria': 'containing', 'value': '原因分析', 'format': note_fmt})worksheet1.conditional_format('C2:C%d' % l_end, {'type': 'text', 'criteria': 'containing', 'value': '对策实施', 'format': note_fmt1})worksheet1.conditional_format('C2:C%d' % l_end, {'type': 'text', 'criteria': 'containing', 'value': '预关闭', 'format': note_fmt2})worksheet1.conditional_format('C2:C%d' % l_end, {'type': 'text', 'criteria': 'containing', 'value': '关闭', 'format': note_fmt3})note_fmt = workbook.add_format({'bold':False,'font_name':u'阿里巴巴普惠体','font_color':'black','font_strikeout':False,'align': 'center', 'valign': 'vcenter','underline':False,'bg_color':'#FCD5B4'})worksheet1.conditional_format('G2:G%d' % l_end, {'type': 'text', 'criteria': 'containing', 'value': '电池', 'format': note_fmt})note_fmt1 = workbook.add_format({'bold':False,'font_name':u'阿里巴巴普惠体','font_color':'black','font_strikeout':False,'align': 'center', 'valign': 'vcenter','underline':False,'bg_color':'#C5D9F1'})worksheet1.conditional_format('G2:G%d' % l_end, {'type': 'text', 'criteria': 'containing', 'value': '电驱', 'format': note_fmt1})# worksheet1.conditional_format('N2:N%d' % l_end, {'type': 'text', 'criteria': 'containing', 'value': 'SQE电驱', 'format': note_fmt1})note_fmt2 = workbook.add_format({'bold':False,'font_name':u'阿里巴巴普惠体','font_color':'black','font_strikeout':False,'align': 'center', 'valign': 'vcenter','underline':False,'bg_color':'#D8E4BC'})worksheet1.conditional_format('G2:G%d' % l_end, {'type': 'text', 'criteria': 'containing', 'value': '系统集成', 'format': note_fmt2})# worksheet1.conditional_format('N2:N%d' % l_end, {'type': 'text', 'criteria': 'containing', 'value': 'SQE系统集成', 'format': note_fmt2})note_fmt = workbook.add_format({'bold':False,'font_name':u'阿里巴巴普惠体','font_color':'orange','font_strikeout':False,'align': 'center', 'valign': 'vcenter','underline':False,'bg_color':'white'})worksheet1.conditional_format('Q2:Q%d' % l_end, {'type': 'text', 'criteria': 'containing', 'value': '充电异常', 'format': note_fmt})note_fmt = workbook.add_format({'bold':False,'font_name':u'阿里巴巴普惠体','font_color':'#C00000','font_strikeout':False,'align': 'center', 'valign': 'vcenter','underline':False,'bg_color':'white'})worksheet1.conditional_format('Q2:Q%d' % l_end, {'type': 'text', 'criteria': 'containing', 'value': '限功率', 'format': note_fmt})note_fmt = workbook.add_format({'bold':False,'font_name':u'阿里巴巴普惠体','font_color':'#C00000','font_strikeout':False,'align': 'center', 'valign': 'vcenter','underline':True,'bg_color':'white'})worksheet1.conditional_format('Q2:Q%d' % l_end, {'type': 'text', 'criteria': 'containing', 'value': '上电失败', 'format': note_fmt})note_fmt = workbook.add_format({'bold':True,'font_name':u'阿里巴巴普惠体','font_color':'#C00000','font_strikeout':False,'align': 'center', 'valign': 'vcenter','underline':2,'bg_color':'white'})worksheet1.conditional_format('Q2:Q%d' % l_end, {'type': 'text', 'criteria': 'containing', 'value': '行车失去动力', 'format': note_fmt})note_fmt = workbook.add_format({'bold':True,'font_name':u'阿里巴巴普惠体','font_color':'black','font_strikeout':False,'align': 'center', 'valign': 'vcenter','underline':False,'bg_color':'red'})worksheet1.conditional_format('Q2:Q%d' % l_end, {'type': 'text', 'criteria': 'containing', 'value': '电池热失控', 'format': note_fmt})note_fmt = workbook.add_format({'bold':True,'font_name':u'阿里巴巴普惠体','font_color':'black','font_strikeout':False,'align': 'center', 'valign': 'vcenter','underline':2,'bg_color':'white'})worksheet1.conditional_format('Q2:Q%d' % l_end, {'type': 'text', 'criteria': 'containing', 'value': '碰撞', 'format': note_fmt})writer.save()

实现条件格式:

转自:https://www.jianshu.com/p/44b8dee3cdb0

df.style.format('{:.1f}',subset='均值').set_caption('高三(5)班期末考试成绩').\
hide_index().hide_columns(['索引']).bar('语文',vmin=0).highlight_max('均值').\
background_gradient('Greens',subset='数学').highlight_null()

条件格式测试可以用:

if __name__ == '__main__':import pandas as pdimport numpy as npdf =pd.read_excel(r'C:\Users\Administrator\Desktop\tmp\你好2!.xlsx')df.style.highlight_null().render().split('\n')[:10]df.style.background_gradient("Greens", subset="aa")df.style.bar("Fare", vmin=0).background_gradient("Greens", subset="bb").highlight_null()# df.to_excel("aaa.xlsx", "aaa", index=False)# df.to_excel("aaa.xlxs")writer = pd.ExcelWriter("log_1.xlsx", engine='xlsxwriter')# 保存到本地exceldf.to_excel(writer, sheet_name='Sheet1', index=False)workbook = writer.bookworksheet = writer.sheets['Sheet1']fmt = workbook.add_format({"font_name": u"微软雅黑"})worksheet.set_column('A:E', 15, fmt)border_format = workbook.add_format({'border': 1})l_end = len(df.index) + 2# highlight_fmt = workbook.add_format({'bg_color': '#FFD7E2', 'num_format': '0.00%'})highlight_fmt = workbook.add_format({'bg_color': '#FFD7E2', 'num_format': '0.0'})# 有条件设定表格格式:高亮百分比worksheet.conditional_format('A2:A%d' % l_end,{'type': 'cell', 'criteria': '>', 'value': 0.1, 'format': highlight_fmt})worksheet.conditional_format('A1:E%d' % l_end, {'type': 'no_blanks', 'format': border_format})# 3.设置格式header_format = workbook.add_format({'valign': 'vcenter',  # 垂直对齐方式'align': 'center',  # 水平对齐方式})header_format1 = workbook.add_format({'valign': 'vcenter',  # 垂直对齐方式'align': 'center',  # 水平对齐方式'text_wrap': True})worksheet.set_column("A:A", 15, header_format)worksheet.set_column("B:C", 10, header_format1)worksheet.set_column("D:D", 15, header_format)worksheet.set_default_row(20)  # 设置所有行高worksheet.set_row(0, 15, header_format)  # 设置指定行writer.save()writer.close()

pandas操作excel 笔记相关推荐

  1. 安装命令:pip install xlrd ,pandas操作Excel学习笔记__7000

    pandas操作Excel学习笔记_loc和iloc_7000 pandas操作Excel学习笔记__7000 1.安装环境:pandas需要处理Excel的模块xlrd,所以需要提前安装xlrd.不 ...

  2. python 第三方模块之 pandas 操作 excel

    python 解析 excel 对比 包 版本 xls读 xlsx读 xls写 xlsx写 备注 xlrd 1.1.0(2017年8月22日) √ √ 2.0 之后不支持xlsx xlwt 1.3.0 ...

  3. python读写excel模块pandas_如何用python pandas操作excel?

    之前跟大家说过关于python处理excel的问题,但是大家反映有些繁琐,大概涉及内容比较多,于是,小编在日常学习中,发现了更简单的方式,现在给大家展示,以便于大家在日后学习里可以方便使用,一起来看下 ...

  4. pandas写入excel指定行_使用pandas操作excel

    pandas操作excel 最近由于要处理一些excel表格,发现pandas可以免去很多的繁琐的人工劳动,在这里记录一下我所用到的知识. 导入文档 将excel中的工作表导入 filename = ...

  5. Python入门到实战(五)自动化办公、pandas操作Excel、数据可视化、绘制柱状图、操作Word、数据报表生成、pip install国内镜像下载

    Python入门到实战(五)conda使用.pandas操作Excel.数据可视化.绘制柱状图.操作Word.数据报表生成.pip install国内镜像下载 conda使用 常用操作 配置VS+Co ...

  6. Python Pandas操作Excel表格文件:创建新表格,追加数据

    前言: python操作excel表格文件的增删读写,一般需要用到的第三方库有xlwt,xlrd.xlrd负责读取excel,xlwt负责写入excel文件.这种操作方法比较繁琐,效率还不错,通俗易懂 ...

  7. pandas操作excel的应用

    1.pandas基本读取和写入excel表格 1.1.pandas读取excel表格 import pandas as pd # 创建空DataFrame实例,DataFrame就是数据帧 df = ...

  8. 使用pandas操作excel

    初学pandas的一些总结 pandas操作excel 导入文档 将excel中的工作表导入 对DataFrame进行操作 查看dataframe的行数列数 对于dataframe的某一列进行筛选 对 ...

  9. python3打包成exe把openpyxl和pandas_Python openpyxl、pandas操作Excel方法简介与具体实例...

    本篇重点讲解windows系统下 Python3.5中第三方excel操作库-openpyxl: 其实Python第三方库有很多可以操作Excel,如:xlrd,xlwt,xlwings甚至注明的数据 ...

  10. pandas操作excel,matplotlib.pyplot画图插入到excel,处理复杂excel简单练习

    在数据分析上,一直都在公司zeppelin上敲python/scala代码,进行数据分析,公司内搞了个小考试,操作excel,弄matplotlib画图之类的: 好久没弄过这些了,在小技术上感觉被打脸 ...

最新文章

  1. JavaIO操作(1)字节流和字符流-1
  2. 反射获取空参数成员方法并运行
  3. php7.1 aes 加密解密,PHP7.1中AES加密解密方法 mcrypt_module_open()替换方案
  4. java method方法_Java Method.getTypeParameters方法代碼示例
  5. 创建单IP的***网络
  6. 传输层端口号的范围是多少?被分为哪两部分_根据资金习性可以把资金分为哪几类?_中级会计职称考试视频...
  7. vue 一个组件内多个弹窗_使用vue实现各类弹出框组件
  8. IBM SVC (2145-CF8) node脱机故障恢复分享
  9. Tronado自定义Form组件
  10. Spring的bean管理(注解创建对象)
  11. MLOps- 吴恩达Andrew Ng Data Definition and Baseline Week3 实验作业
  12. 女生更多!统计局:2019年高等教育在校生中女研究生占比过半
  13. 美计算机科学学者建议:加强青少年网络安全意识引导
  14. java宠物商店_Java如何实现宠物商店管理 Java实现宠物商店管理代码示例
  15. 远离危险 教你使用局域网“隐身术”(转)
  16. iapp教程从入门到精通全部,iapp怎么做软件教程
  17. ar和nm命令的使用
  18. scrapy爬虫折腾系列-02
  19. SmokePing安装手册
  20. CP速配app v2.0.8.2

热门文章

  1. 荣耀4a android art,荣耀4A拆机图解·看真相
  2. linux识别硬盘时显示gpt,Ubuntu不识别GPT硬盘已有系统的解决方案
  3. 正睿OI补题(二分与分治)
  4. 上传资源中问题的说明
  5. Data Structure - Pairing Heap (Java)
  6. 我已经看到了,撤回也没用了(PC微信防撤回补丁)
  7. Gym安装Atari环境(Windows,Linux适用)
  8. 防不胜防:正经AI研究何以变成了计算机生成色情作品?
  9. 谷歌文档_如何比较Google文档中的文档
  10. layui lay-verify 验证