ana*_*chy 4 python excel pandas
我有多个看起来像这样的数据框,数据无关紧要。
我希望它看起来像这样,我想在列标题上方插入一个标题。
我想将它们合并到一个 Excel 文件中的多个选项卡中。
是否可以在将文件保存到 Excel 之前在列标题上方添加另一行并在第一个单元格中插入标题。
我目前正在这样做。
with pd.ExcelWriter('merged_file.xlsx',engine='xlsxwriter') as writer:
for filename in os.listdir(directory):
if filename.endswith('xlsx'):
print(filename)
if 'brands' in filename:
some function
elif 'share' in filename:
somefunction
else:
some function
df.to_excel(writer,sheet_name=f'{filename[:-5]}',index=True,index_label=True)
writer.close()
Run Code Online (Sandbox Code Playgroud)
但是sheet_name太长了,这就是为什么我想在列标题上方添加标题。
我试过这段代码,
columns = df.columns
columns = list(zip([f'{filename[:-5]}'] * len(df.columns), columns))
columns = pd.MultiIndex.from_tuples(columns)
df2 = pd.DataFrame(df,index=df.index,columns=columns)
df2.to_excel(writer,sheet_name=f'{filename[0:3]}',index=True,index_label=True)
Run Code Online (Sandbox Code Playgroud)
但最终看起来像这样,所有数据都消失了,
它应该看起来像这样
您可以先从第二行写入数据,然后将文本写入第一个单元格:
df = pd.DataFrame({'col': list('abc'), 'col1': list('def')})
print (df)
col col1
0 a d
1 b e
2 c f
writer = pd.ExcelWriter('test.xlsx', engine='xlsxwriter')
df.to_excel(writer, sheet_name='Sheet1', startrow = 1, index=False)
workbook = writer.book
worksheet = writer.sheets['Sheet1']
text = 'sometitle'
worksheet.write(0, 0, text)
writer.save()
Run Code Online (Sandbox Code Playgroud)
然后对于阅读需要:
title = pd.read_excel('test.xlsx', nrows=0).columns[0]
print (title)
sometitle
df = pd.read_excel('test.xlsx', skiprows=1)
print (df)
col col1
0 a d
1 b e
2 c f
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8104 次 |
| 最近记录: |