网站建设价格标准方案,六安网站设计公司,医院网站建设怎么设置,九江建筑工程有限公司Pandas操作MultiIndex合并行列的excel#xff0c;写入读取以及写入多余行及Index列处理#xff0c;多字段排序尽量保持原来的顺序 1. 效果图及问题2. 源码参考 今天是谁写Pandas的 复合索引MultiIndex#xff0c;写的糊糊涂涂#xff0c;晕晕乎乎。 是我呀…
记录下#… Pandas操作MultiIndex合并行列的excel写入读取以及写入多余行及Index列处理多字段排序尽量保持原来的顺序 1. 效果图及问题2. 源码参考 今天是谁写Pandas的 复合索引MultiIndex写的糊糊涂涂晕晕乎乎。 是我呀…
记录下现在终于灵台清明了。 明天在记录下直接用 openpyxl 生成合并单元格事半功倍。 跟在Java一样可以参考之前的博客Java Excel导出复杂excel表格样式之ExcelUtil工具类
1. 效果图及问题
可以生成MultiIndex列的excel但是输出会多index列及第3行多一行空行如下图所示 A列Index和第3行 都只是隐藏并没有真正删除 writer.sheets[sheetName].set_row(2, None, None, {‘hidden’: True}) # 删除表格第3行空白行 writer.sheets[sheetName].set_row(2, 0) # 或者设置高度为0效果图如下 真正删除需要用openpyxl wb._sheets[0].delete_rows(3) # 删除表格第3行空白行效果图如下 原始及openpyxl 最终效果对比图如下 构造一个pd Wooksheet在第2行插入一条数据效果图如下
修改某个单元格的值效果图可以看到成功修改 2. 源码
注意openpyxl行数从1开始pd.ExcelWriter行数从0开始
# 生成合并行列的MultiIndex数据表格插入行
# python multiIndexPandas.py# https://blog.csdn.net/HQ1356466973/article/details/83588993
import numpy as np
import openpyxl
import pandas as pd# pandas 插入行
def insertRows(df, cnt, df_add):dfStart df[0:cnt]dfEnd df[cnt:]return pd.concat([dfStart, df_add, dfEnd])# fileName 文件名称
# argument 是否需要生成index列
def write2ExcelOrigin(fileName, argumentFalse):writer pd.ExcelWriter(fileName, enginexlsxwriter) # 可以实现将多个dataframe按不同sheet,保存在一个excel中。sheetName Sheet1if (argument True):df_all.to_excel(writer, sheet_namesheetName)pd2.to_excel(writer, sheet_nametable)elif (argument False):df_all.to_excel(writer, sheet_namesheetName, startcol-2)pd2.to_excel(writer, sheet_nametable, startcol-1)# # startcol-1 可以不输出index列# df_all.to_excel(writer, sheet_namesheetName, startcol-2)# pd2.to_excel(writer, sheet_nametable, startcol-1)# writer.sheets[sheetName].set_column(0, 0, None, None, {hidden: True}) # 删除表格第一列## # 第3行 都只是隐藏并没有真正删除# writer.sheets[sheetName].set_row(2, None, None, {hidden: True}) # 删除表格第3行空白行# # 或者设置高度为0# writer.sheets[sheetName].set_row(2, 0)writer._save()index pd.MultiIndex.from_product([[广东, 广西], [2017, 2018]], names[province, year])
columnMultiIndex pd.MultiIndex.from_product([[IT行业, 制造业], [软件, 硬件]], names[行业, 岗位])
data np.random.randint(100, 2000, size(4, 4))
df_all pd.DataFrame(data, indexindex, columnscolumnMultiIndex)
print(df_all)df2Data np.random.randint(100, 2000, size(3, 9))
columnName [A, B, C, D, E, F, G, H, I]
pd2 pd.DataFrame(df2Data, columns[[Tables] * 3 [Attrs] * 6, columnName])valList [a, b, c]
valList.extend(np.zeros((len(columnName) - 3), dtypestr).tolist())
print(valList)# pandas插入一行
df_add pd.DataFrame(columnspd2.columns, data[valList])# 在第2行插入数据 [a, b, c, , , , , , ]
pd2 insertRows(pd2, 2, df_add)# pandas修改某行某个单元格的值
pd2.loc[1, pd2.columns.values[0]] 999999
pd2.loc[3, pd2.columns.values[-1]] MarvelousfileName excel/multiIndex.xlsx
write2ExcelOrigin(fileName, argumentFalse)
write2ExcelOrigin(fileName.replace(.xlsx, 0.xlsx))# 需要用openpyxl删除多余的第3行
wb openpyxl.load_workbook(fileName) # 获取表格文件# 批量修改多个sheet
wb._sheets[0].delete_rows(3) # 删除表格第3行空白行
wb._sheets[1].delete_rows(3) # 删除表格第3行空白行
wb.save(filenamefileName.replace(.xlsx, _.xlsx))参考
复合索引构造pandas数据https://blog.csdn.net/HQ1356466973/article/details/83588993https://blog.csdn.net/m0_51212419/article/details/121681797https://blog.csdn.net/u011699626/article/details/135846298