簡體   English   中英

每個唯一值的 Excel 文件(多張)的數據幀

[英]Dataframes to Excel file (multiple sheets) per unique value

我有三個不同的數據框,它們都包含具有特定 ID 的列。

DF_1

DF_1

DF_2

DF_2

DF_3

DF_3

我想要實現的是創建一個 Excel 工作表,其 ID 為其名稱,數據幀為每個唯一值的工作表“DF_1、DF_2、DF_3”。 所以“1.xlsx”應該包含三張表(數據框),其中只有與該 ID 相關聯的記錄。 我遇到的問題是要么獲取多張紙,要么只獲取每個唯一值的對應值。

for name, r in df_1.groupby("ID"):
   r.groupby("ID").to_excel(f'{name}.xlsx', index=False)

這段代碼給了我正確的 output,但僅適用於 df_1。 我得到 5 個 Excel 文件,每個 ID 都有相應的行,但只有一張,即 df_1。 我不知道如何在每個 ID 中包含 df_2 和 df_3。 當我嘗試將以下代碼與嵌套循環一起使用時,我得到所有行而不是每個唯一值:

writer = pd.ExcelWriter(f'{name}.xlsx')
r.to_excel(writer, sheet_name=f'{name}_df1')
r.to_excel(writer, sheet_name=f'{name}_df2')
r.to_excel(writer, sheet_name=f'{name}_df3')
writer.save()

在這部分之前還有更多的數據轉換,最終的數據幀是最終需要的一次。 坦率地說,我不知道如何解決這個問題或如何實現這一點。 希望有人有一些有見地的評論。

您可以嘗試以下方法:

unique_ids = df_1['ID'].unique()
for name in unique_ids:
    writer = pd.ExcelWriter(f'{name}.xlsx')

    r1 = df_1[df_1['ID'].eq(name)]
    r1.to_excel(writer, sheet_name=f'{name}_df1')

    r2 = df_2[df_2['ID'].eq(name)]
    r2.to_excel(writer, sheet_name=f'{name}_df2')

    r3 = df_3[df_3['ID'].eq(name)]
    r.to_excel(writer, sheet_name=f'{name}_df3')

    writer.save()    

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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