【问题标题】:Pandas - Use second row as header and keep the first row in dataframePandas - 使用第二行作为标题并将第一行保留在数据框中
【发布时间】:2021-10-17 17:54:40
【问题描述】:

我有一个包含多行的 excel 文件作为模板。

使用 pandas 读取时,我需要保留数据框中的所有行,但最后一行必须是标题。这是将 excel 读入 df 后的示例,其中第一行实际上只有一个包含内容的字段(版本 = 2.0),第二行(索引 0)应该是标题。

   Version=2.0   Unnamed: 1    Unnamed: 2             Unnamed: 3   Unnamed: 4   Unnamed: 5
0  Part #        Manufacturer  Manufacturer Parts #   UPC / ISBN   NE#          Currency

使用header=[1]阅读时,第一行完全省略,但我需要保留它。

在用其他数据填充数据框后,我想将整个数据框打印到 excel 中,保留第一行并使用模板的最后一行作为标题,如上所述。

我希望结果如下:

   Version=2.0
   Part #        Manufacturer  Manufacturer Parts #   UPC / ISBN   NE#          Currency
0  data          data          data                   data         data         data
1  data          data          data                   data         data         data

我尝试使用 header=[0,1] 读取 excel,但写入时,excel 文件如下所示,使用代码: df.to_excel("test.xlsx", sheet_name='Sheet1', index=True, merge_cells=False)

使用index=False,它根本不起作用,因为根据错误消息,如果不使用索引,多索引到 excel 将不起作用。

【问题讨论】:

    标签: python excel pandas dataframe header


    【解决方案1】:

    使用skiprows=1 保存您的第一行 (Version=2.0) 和 read_excel 以跳过第一行:

    with pd.ExcelFile('test.xlsx', engine='openpyxl') as xlr:
        version = xlr.book.active['A1'].value
        df = pd.read_excel(xlr, skiprows=1)
    

    用同样的方法保存你的文件:

    with pd.ExcelWriter('test2.xlsx', engine='openpyxl') as xlw:
        df.to_excel(xlw, startrow=1, index=False)
        xlw.book.active['A1'] = version
    

    【讨论】:

    • 我试过了,但这会完全删除第一行。输出不再包含“2.0 版”。
    • @MuhammedÜnüvar。我更新了我的答案。我认为这是您所期望的(我希望)。
    • 谢谢,这正是我所需要的。我接受了这个答案,因为代码运行良好。
    猜你喜欢
    • 1970-01-01
    • 2023-02-13
    • 2019-10-14
    • 1970-01-01
    • 2020-06-25
    • 1970-01-01
    • 2014-12-01
    • 2020-06-05
    • 1970-01-01
    相关资源
    最近更新 更多