[英]How do I write multiple dataframes to one excel sheet?
我知道如何在一個 Excel 中將多個數據框寫入不同的工作表。
但是現在我想在一個 excel 中橫向編寫兩個不同的數據框。
例如:
我知道的唯一方法是
pd.concat((df1.reset_index() , df2.reset_index(), axis=1).to_excel('1.xlsx')
但這並不方便。
原因:
PS:使用pd.concat
只是inconvenient
,因為需要付出很多努力才能使 excel 看起來漂亮。
我還試圖用pd.ExcelWriter
可分配startcol
:
工作1:
file_name = 'xxx.xlsx' writer = pd.ExcelWriter(file_name, engine='xlsxwriter', datetime_format='yyyy-mm-dd', date_format='yyyy-mm-dd') df1.to_excel(writer, sheet_name=sheet_name, startrow=0 , startcol=0)
工作 2
file_name = 'xxx.xlsx' writer = pd.ExcelWriter(file_name, engine='xlsxwriter', datetime_format='yyyy-mm-dd', date_format='yyyy-mm-dd') df2.to_excel(writer, sheet_name=sheet_name, startrow=0 , startcol=df1.shape[1]+2)
但這會覆蓋excel ....
我希望有一種簡單的方法可以在不覆蓋文件的情況下在startrow, startcol
位置寫入數據幀?
在df1和df2中創建列,並將值作為行號。 這樣,您將保留兩個數據框的順序。
2)合並在第一步中創建的列上的兩個數據框
3)推動這個卓越
df1['key']= df1.reset_index().index
df2['key'] = df2.reset_index().index
pd.merge(df1, df2, how='outer',on='key').to_excel('1.xlsx')
您可以使用 xlwings:獲取 df1 的最后一列,然后使用.offset(column_offset=2)
再向右.offset(column_offset=2)
兩列,然后插入 df2。 它靈活且易於使用(無需使用pd.concat
):
import xlwings as xw
import pandas as pd
df1 = pd._testing.makeDataFrame()
df2 = pd._testing.makeDataFrame()
with xw.App(visible=False) as app:
wb = xw.Book()
wb.sheets[0].range("A1").value = df1
wb.sheets[0].range("A1").expand("right")[-1].offset(column_offset=2).value = df2
wb.save()
wb.close()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.