2015-12-02 94 views
2

一个可以写入数据到特定的细胞,使用:XlsxWriter Python来写一个数据帧中的特定细胞

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

但是如果你试图写一个整个数据帧,DF2,在单元格“B5”开始:

xlsworksheet.write('B5', df2) 

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

应该如何写一个特定单元格开始的整个数据框?

我问这个问题的原因是因为我需要在Excel中的同一张表中粘贴2个不同的熊猫数据框。

回答

6

XlsxWriter不写熊猫dataframes直。但是,它与Pandas集成在一起,所以您可以以相反的方式进行操作。

下面是使用startrow参数熊猫to_excel的写入2个dataframes到相同的工作表的一个小例子:

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选项。

+0

谢谢@jmcnamara正是我在找什么。 – Gabriel

+1

您可能希望在末尾添加'writer.close()'来解锁创建的文件。一个新的pythoner可能会认为代码失败。 –

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') 

希望这有助于...

相关问题