XlsxWriter python在特定单元格中写入数据帧

时间:2015-12-02 14:29:32

标签: python pandas xlsxwriter

可以使用以下方法将数据写入特定单元格:

xlsworksheet.write('B5', 'Hello')

但是如果你试着写一个完整的数据帧,df2,从单元格'B5'开始:

xlsworksheet.write('B5', df2)

TypeError: Unsupported type <class 'pandas.core.frame.DataFrame'> in write()

从特定单元格开始编写整个数据帧的方法是什么?

我问这个的原因是因为我需要在excel中的同一张表中粘贴2个不同的pandas数据帧。

2 个答案:

答案 0 :(得分:6)

XlsxWriter不直接编写Pandas数据帧。但是,它与Pandas集成在一起,所以你可以反过来做。

以下是使用Pandas to_excelstartrow参数将2个数据框写入同一工作表的小例子:

import pandas as pd

df1 = pd.DataFrame({'Data': [10, 20, 30, 40]})
df2 = pd.DataFrame({'Data': [13, 24, 35, 46]})

writer = pd.ExcelWriter('pandas_simple.xlsx', engine='xlsxwriter')

df1.to_excel(writer, sheet_name='Sheet1')
df2.to_excel(writer, sheet_name='Sheet1', startrow=6)

输出:

enter image description here

您可以使用其他to_excel选项关闭列和行索引。

答案 1 :(得分:1)

您将字符串写入Excel。要将DataFrames转换为字符串,您可以使用以下几个选项,to_csv是最佳选择:

>>> string1 = df1.to_csv(writer)
>>> xlsworksheet.write('B5',string1)
>>> string2 = df2.to_csv(writer,'Sheet2')
>>> xlsworksheet.write('C5', string2)

请注意,这会将整个数据帧写入一个单元格。我知道将一个框架写入Excel工作表中单个单元格的唯一方法是将它们组合起来然后使用to_excel

>>> writer = ExcelWriter('output.xlsx')
>>> frame = pd.concat(df1, df2)
>>> frame.to_excel(writer,'Sheet1')

希望这会有所帮助......