簡體   English   中英

如何將多個數據框寫入一張 Excel 表格?

[英]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') 

但這並不方便。

原因:

  1. 連接兩個 df 會弄亂列的順序,必須重新排序。
  2. 必須重置索引(df1 是日期時間索引,df2 是自定義字符串索引),這會導致呈現丑陋。
  3. 調整位置很困難,如果我需要左側的一個數據框和右側的兩個垂直放置的數據框怎么辦?

PS:使用pd.concat只是inconvenient ,因為需要付出很多努力才能使 excel 看起來漂亮。

我還試圖用pd.ExcelWriter可分配startcol

  1. 工作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. 工作 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM