簡體   English   中英

將 dataframe 的每個切片保存到特定的 excel 工作表中

[英]Save each slice of a dataframe into a specific excel sheet

我有一個 dataframe,它看起來像這樣:

print(df)
    city    Year    ville   Asset_Type  Titre   psqm
0   Agadir  2010.0  Agadir  Appart  3225    6276.923077
1   Agadir  2010.0  Agadir  Maison_Dar  37  8571.428571
2   Agadir  2010.0  Agadir  Villa   107 6279.469027
3   Agadir  2011.0  Agadir  Appart  2931    6516.853933
4   Agadir  2011.0  Agadir  Maison_Dar  33  9000.000000
... ... ... ... ... ... ...
669 Tanger  2020.0  Tanger  Maison_Dar  134 13382.653061
670 Tanger  2021.0  BeniMakada  Appart  67  5555.555556
671 Tanger  2021.0  BeniMakada  Maison_Dar  4   14533.492823
672 Tanger  2021.0  Tanger  Appart  160 6148.338940
673 Tanger  2021.0  Tanger  Maison_Dar  12  13461.538462

將 dataframe 保存到 excel 工作表中很簡單

df.to_excel(path_to_output+'df.xlsx')

我想將每個城市( city列)的 output 保存在同一個 excel 文件的不同工作表中。 請問我該怎么做? 我不確定我是否需要提前手動創建工作表然后遍歷每個工作表或動態創建它們(通過 python)?

謝謝你的幫助

通過使用 dataframe 內的查詢循環遍歷每個唯一的城市,在每個循環中使用.to_excel function

for i in range(len(df.city.unique())):
 df[df.city==df.city.unique()[i]].to_excel(path_to_output+f'df{i}.xlsx')

這段代碼對我有用。 它在單獨的 excel 工作表中輸出每個城市。

writer = pd.ExcelWriter(path_to_output+'Index_Output.xlsx', engine = 'xlsxwriter')
name=list(df.city.unique())
for i in range(len(df.city.unique())):    
    df[df.city==df.city.unique()[i]].to_excel(writer, sheet_name= name[i])

writer.save()
writer.close()

這是與@kaispace30098 做同樣事情的一種更 pandasesque 的方式,但應該更快,因為我們不會遍歷每個組。

先上代碼,再解釋

with pd.ExcelWriter('one_df.xlsx') as writer:
    df.groupby('city').apply(
        lambda group: group.to_excel(writer, sheet_name=group.name)
    )
  1. 我們使用with... as...語法創建一個編寫器,因為它會在我們完成后自動關閉文件。 否則,您將不得不稍后手動執行此操作。
  2. 由於您想按城市對每張紙進行分組,因此我們使用.groupby('city')
  3. 然后,我們使用.apply()將 function 應用於每個組,我們將每個組轉換為 Excel,寫入組名,即城市名稱。

暫無
暫無

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

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