pandas dataframe数据存为excel,当columns是多行(多个表头),存为表格时,index无法设置为False的问题

pands.dataframe,最近遇到当columns是多行(多个表头)时,存表格时,index=False,报错,查了很多资料,结合了多个网上的记录才弄好,纪录一下。
首先就是如何将dataframe的columns设置成2级表头见代码和生成的表格:

M_F=pd.DataFrame(M_F,columns=[['宜昌天气预测报']*8+['五个分区降雨量(mm)']*5,['起报日期','预报日期','气温(℃)','降水(mm)','风速(m/s)','风向','气压(hPa)',
                                 '湿度(%)','兴山','夷陵区','五峰','长阳','宜都']])`

生成的表格:
其实就是将columns设置成一个2维的表格。其实就是将在这里插入图片描述
但是这样在生成表格时,表格会有一行空白行,且表格第一列为dataframe的index,所以一般选择(.to_excel(writer,sheet_name=‘3小时级记录’,index=False),但是这里由于是两个表头,代码会报错。故需要用到另外的操作看代码:

writer = pd.ExcelWriter('宜昌气象预测数据(3h)\{}.xlsx'.format(datetime.now().strftime('%Y%m%d')),engine='xlsxwriter')#可以实现将多个dataframe按不同sheet,保存在一个excel中。
  M_F.to_excel(writer,sheet_name='3小时级记录')
  T_D.to_excel(writer,sheet_name='日记录') 
  # writer.sheets['3小时级记录'].delete_cols(1,2)
  # writer.sheets['3小时级记录'].delete_rows(3)
  # writer.sheets['日记录'].delete_cols(1)
  # writer.sheets['日记录'].delete_rows(3)
  writer.sheets['3小时级记录'].set_column(0, 0, None, None, {'hidden': True})#删除表格第一列
  writer.sheets['3小时级记录'].set_row(2, None, None, {'hidden': True})#删除表格第3行空白行
  writer.sheets['日记录'].set_column(0, 0, None, None, {'hidden': True})
  writer.sheets['日记录'].set_row(2, None, None, {'hidden': True})
  writer.save()

注意,engine='xlsxwriter’,不可缺少,不然后面set_column方法就用不了。
最后感谢两只大佬的笔记:
https://blog.csdn.net/qq_39463197/article/details/116591204
https://www.zhihu.com/question/446994035

  • 4
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
要将Python爬取的数据转化为Excel表格,并带有多个表头,可以使用Python中的pandas库。 下面是一个简单的例子,假设我们已经爬取了一些数据数据以列表的形式存储: ```python data = [['John', 25, 'Male', 'USA'], ['Sarah', 30, 'Female', 'Canada'], ['Bob', 40, 'Male', 'UK']] ``` 我们可以用pandas数据转换为DataFrame对象: ```python import pandas as pd df = pd.DataFrame(data, columns=['Name', 'Age', 'Gender', 'Country']) ``` 在这个例子中,我们定义了四个表头:Name、Age、Gender和Country。现在我们可以将这个DataFrame对象写入到Excel文件中: ```python writer = pd.ExcelWriter('data.xlsx', engine='xlsxwriter') df.to_excel(writer, sheet_name='Sheet1', index=False) writer.save() ``` 在这个例子中,我们使用了xlsxwriter引擎将数据写入到Excel文件中。我们还将sheet_name设置为'Sheet1',并将index设置False,这样就不会在Excel文件中生成默认的索引列。 如果我们想要在Excel文件中包含多个表头,可以使用pandas的MultiIndex对象。例如,假设我们想要在Excel文件中包含两个表头:Name和Personal Information,可以使用以下代码: ```python header = pd.MultiIndex.from_tuples([('Name', ''), ('Personal Information', 'Age'), ('Personal Information', 'Gender'), ('Personal Information', 'Country')]) df.columns = header writer = pd.ExcelWriter('data.xlsx', engine='xlsxwriter') df.to_excel(writer, sheet_name='Sheet1', index=False) writer.save() ``` 在这个例子中,我们首先使用MultiIndex对象定义了两个表头:Name和Personal Information,并在Personal Information表头下定义了三个子表头:Age、Gender和Country。然后,我们将这个MultiIndex对象赋值给DataFramecolumns属性,以更新DataFrame表头。最后,我们将DataFrame写入到Excel文件中,并将sheet_name设置为'Sheet1'。 这样,我们就可以在Excel文件中看到两个表头了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值