[英]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)
)
with... as...
語法創建一個編寫器,因為它會在我們完成后自動關閉文件。 否則,您將不得不稍后手動執行此操作。.groupby('city')
.apply()
將 function 應用於每個組,我們將每個組轉換為 Excel,寫入組名,即城市名稱。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.