2015-12-02 96 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') 

希望這有助於...

相關問題