python - 将数据框的每个切片保存到特定的 Excel 工作表中

标签 python excel dataframe xlsxwriter

我有一个如下所示的数据框:

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

将数据框保存到 Excel 工作表中非常简单

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

我想将每个城市的输出(city 列)保存在同一 Excel 文件的不同工作表中。请问我该怎么做?我不确定是否需要提前手动创建工作表,然后循环每个工作表或动态创建它们(通过 python)?

感谢您的帮助

最佳答案

这是一种与 @kaispace30098 做同样事情的更 Pandas 式的方式,但应该更快,因为我们不会迭代每个组。

首先是代码,然后是解释

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() 将函数应用于每个组,其中我们将每个组转换为 Excel 写入,并使用组名称(即城市名称)进行写入。

关于python - 将数据框的每个切片保存到特定的 Excel 工作表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74945130/

相关文章:

excel - 获取更改单元格的地址

vba - 在 Excel for Mac 2016 中另存为 CSV

java - 在java中调用方法(包括Selenium/Apache-POI)

r - 如何使用 R 自动重命名宽数据中的列

scala - Spark Dataframe Join - 重复列(非连接列)

用于查询谷歌地图并获取结果 URL 的 Python 脚本

python - 匿名列表如何在 python 列表理解中工作?

python - 如果其他单元格包含 'something',如何在 2 个单元格中设置值

OpenCV 上的 Python 和 T-API

python - pandas python 中的 COUNTIF 在具有多个条件的多列上