【问题标题】:Write strings/text and pandas dataframe to excel将字符串/文本和 pandas 数据框写入 excel
【发布时间】:2017-09-18 03:42:38
【问题描述】:

我想将一些文本和数据框保存到这样的 excel 文件中:

因此,我有以下变量:

text1 = "some text here"
text2 = "other text here"
df = pd.DataFrame({"a": [1,2,3,4,5], "b": [6,7,8,9,10], "c": [11,12,13,14,15]})

我发现可以使用 xlsxwriter 来执行此操作,这意味着我基本上必须遍历整个数据帧才能将每个条目写入 excel 工作簿中的不同单元格。这很麻烦。

所以,我认为必须有一种更简单的方法来做到这一点;像这样:

writer = pd.ExcelWriter("test.xlsx", engine="xlsxwriter")
writer.write(text1, startrow=0, startcol=0)
writer.write(text1, startrow=1, startcol=0)
df.to_excel(writer, startrow=4, startcol=0)

有没有更简单的方法?

【问题讨论】:

    标签: python pandas xlsxwriter


    【解决方案1】:

    你需要write or write_string:

    text1 = "some text here"
    text2 = "other text here"
    df = pd.DataFrame({"a": [1,2,3,4,5], "b": [6,7,8,9,10], "c": [11,12,13,14,15]})
    
    writer = pd.ExcelWriter("test.xlsx", engine="xlsxwriter")
    df.to_excel(writer, startrow=4, startcol=0)
    
    worksheet = writer.sheets['Sheet1']
    worksheet.write(0, 0, text1)
    worksheet.write(1, 0, text2)
    #another solution
    #worksheet.write_string(0, 0, text1)
    #worksheet.write_string(1, 0, text2)
    
    writer.save()
    

    注意: writewrite_string 实际上是 xlsxwriter 包函数。要使用它们,必须安装包并且必须使用xlsxwriter 引擎初始化pd.ExcelWriter(在pandas 1.0.5 中它默认为io.excel.<extension>.writer 引擎)

    【讨论】:

    • Sheet1 是如何添加的?
    • @MikePalmice - 这是默认值,但如果需要自定义使用 df.to_excel(writer, startrow=4, startcol=0, sheet_name ='aaa') worksheet = writer.sheets['aaa']
    • 正确,但 worksheet = writer.sheets['aaa'] 如果不存在,则不会创建新工作表。我也得到 'Worksheet' 对象没有属性 'write' 或 'write_string'
    • 我得到 'Worksheet' 对象没有属性 'write' 对于 write-string 也有同样的错误
    • 要使用write_stringwrite 方法,pd.ExcelWriter 必须使用engine='xlsxwriter' 进行初始化,并且需要安装xlsxwriter 包。信用@SonOfLight
    【解决方案2】:

    上述解决方案是正确的......但是

    write 函数是 xlsxwriter 库的一部分。 在声明作者时,您需要指明您希望 pandas 使用什么引擎。

    writer = pd.ExcelWriter("test.xlsx", engine="xlsxwriter")
    

    xlsxwriters 函数随后可通过 pandas 使用。上述解决方案中的所有其他代码保持不变。

    当然,您需要安装该库。 Here 是一种程序检查。

    会发表评论,但代表低

    【讨论】:

      【解决方案3】:

      你也可以使用 openpyxl 包:

      import pandas as pd
      df = <pandas dataframe>
      with pd.ExcelWriter(filename) as writer:
          text = "Text message"
          text_sheet = writer.book.create_sheet(title='text_sheet')
          text_sheet.cell(column=1, row=1, value=text)
          df.to_excel(writer, sheet_name = 'df_sheet', index = False)
      

      但这不会把它放在同一张纸上。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2023-03-30
        • 1970-01-01
        • 2018-11-20
        • 1970-01-01
        • 2015-03-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多