我创建了一个有多个索引的数据框,(3个标题,两个索引)我使用
to.excel()
方法将它导出到excel,第一个截图:
我怎样才能达到我想要的?感谢您提供的任何帮助! 我在其他网站上找到了一些帮助,但没有找到 MultiIndex。 这是我的代码:
import xlsxwriter
from xlsxwriter import Workbook
import pandas as pd
import numpy as np
from numpy import *
import ctypes
from openpyxl.workbook import Workbook
from docxtpl import DocxTemplate
laenge=['50','75','100','125','150','175','200','225','250','275','300']
TM=["S", "2TM", "3TM", "4TM", "5TM", "6TM", "8TM", "10TM", "12TM"]
spannung=['400V','200V']
MotorenList=["200HX","200UHX" ,"240HX", "310HX", "360UHX","564HX"]
DataToCalculat=['M_N','M_0','n_MAX','n_N','I_N','I_p','I_0']
columns=[np.array(spannung),np.array(MotorenList),np.array(DataToCalculat)]
columnsList=pd.MultiIndex.from_product(columns,names=['Voltage:','Motor:',''])
rows=[np.array(laenge),np.array(TM)]
indexList=pd.MultiIndex.from_product(rows,names=['h','TM'])
df=pd.DataFrame(np.random.randn(indexList.shape[0],columnsList.shape[0]),index=indexList, columns=columnsList)
writer= pd.ExcelWriter('test2.xlsx', engine='xlsxwriter')
for motor in MotorenList:
if motor=='200HX' or motor=='200UHX':
sheetName='RM 200'
df_400V=pd.DataFrame(df[['400V']].xs(motor,level='Motor:',axis=1,drop_level=False))
df_200V=pd.DataFrame(df[['200V']].xs(motor,level='Motor:',axis=1,drop_level=False))
if motor=='200UHX':
df_400V.to_excel(writer,sheet_name=sheetName,startrow=0,startcol=df_400V.shape[1]+3)
df_200V.to_excel(writer,sheet_name=sheetName,startrow=df_400V.shape[0]+5,startcol=df_400V.shape[1]+3)
else:
df_400V.to_excel(writer,sheet_name=sheetName,startrow=0,startcol=0)
df_200V.to_excel(writer,sheet_name=sheetName,startrow=df_400V.shape[0]+5,startcol=0)
elif motor=='240HX' or motor=='240UHX':
sheetName='RM 240'
df_400V=pd.DataFrame(df[['400V']].xs(motor,level='Motor:',axis=1,drop_level=False))
df_200V=pd.DataFrame(df[['200V']].xs(motor,level='Motor:',axis=1,drop_level=False))
if motor=='240UHX':
df_400V.to_excel(writer,sheet_name=sheetName,startrow=0,startcol=df_400V.shape[1]+3)
df_200V.to_excel(writer,sheet_name=sheetName,startrow=df_400V.shape[0]+5,startcol=df_400V.shape[1]+3)
else:
df_400V.to_excel(writer,sheet_name=sheetName,startrow=0,startcol=0)
df_200V.to_excel(writer,sheet_name=sheetName,startrow=df_400V.shape[0]+5,startcol=0)
elif motor=='310HX' or motor=='310UHX':
sheetName='RM 310'
df_400V=pd.DataFrame(df[['400V']].xs(motor,level='Motor:',axis=1,drop_level=False))
df_200V=pd.DataFrame(df[['200V']].xs(motor,level='Motor:',axis=1,drop_level=False))
if motor=='310UHX':
df_400V.to_excel(writer,sheet_name=sheetName,startrow=0,startcol=df_400V.shape[1]+3)
df_200V.to_excel(writer,sheet_name=sheetName,startrow=df_400V.shape[0]+5,startcol=df_400V.shape[1]+3)
else:
df_400V.to_excel(writer,sheet_name=sheetName,startrow=0,startcol=0)
df_200V.to_excel(writer,sheet_name=sheetName,startrow=df_400V.shape[0]+5,startcol=0)
elif motor=='360HX' or motor=='360UHX':
sheetName='RM 360'
df_400V=pd.DataFrame(df[['400V']].xs(motor,level='Motor:',axis=1,drop_level=False))
df_200V=pd.DataFrame(df[['200V']].xs(motor,level='Motor:',axis=1,drop_level=False))
if motor=='360UHX':
df_400V.to_excel(writer,sheet_name=sheetName,startrow=0,startcol=df_400V.shape[1]+3)
df_200V.to_excel(writer,sheet_name=sheetName,startrow=df_400V.shape[0]+5,startcol=df_400V.shape[1]+3)
else:
df_400V.to_excel(writer,sheet_name=sheetName,startrow=0,startcol=0)
df_200V.to_excel(writer,sheet_name=sheetName,startrow=df_400V.shape[0]+5,startcol=0)
elif motor=='564HX' or motor=='564UHX':
sheetName='RM 564'
df_200V=pd.DataFrame(df[['200V']].xs(motor,level='Motor:',axis=1,drop_level=False))
df_200V=pd.DataFrame(df[['200V']].xs(motor,level='Motor:',axis=1,drop_level=False))
if motor=='564UHX':
df_400V.to_excel(writer,sheet_name=sheetName,startrow=0,startcol=df_400V.shape[1]+3)
df_200V.to_excel(writer,sheet_name=sheetName,startrow=df_400V.shape[0]+5,startcol=df_400V.shape[1]+3)
else:
df_400V.to_excel(writer,sheet_name=sheetName,startrow=0,startcol=0)
df_200V.to_excel(writer,sheet_name=sheetName,startrow=df_400V.shape[0]+5,startcol=0)
writer.close()
• Python:如何在 pandas 中读取 #0000000000 格式的 excel 列时保留前导零
• 在 pandas multiindex 中设置共享列为索引列
• 如何加速将 excel 文件读入 pandas [重复]
• 打开 Excel“XML Spreadsheet 2003”格式时避免格式扩展名不匹配消息?
• 使用 iplot 的 Pandas MultiIndex 交互式条形图
• 使用 MultiIndex 分配给 Pandas DataFrame 的整个列?
• 使用 pd.concat 时的 MultiIndex 名称消失了
• Python Pandas DataFrame:如何向现有数据添加额外的索引/列
• 使用 python 3.x 将 excel 文件解析为 json
• 使用 openpyxl 保存 excel 文件会破坏特定 excel 版本上的工作表格式
• 如何复制电子表格中的现有工作表,然后使用 pandas 重命名新副本?
• 如何在不自动更新链接的情况下从 Excel VBA 宏打开 PPT 文件?