python - 如何使用基于列中的值的工作表将数据框导出到 Excel
问题描述
我已经在 Python 中基于边距多个 excel 文件创建了一个数据框,现在我想将该组合数据导出到一个 .xlsx 文件,其中包含基于列中的值的多个工作表,并以列中的值命名这些工作表.
使用下图中的示例,我目前可以将所有数据导出到 .xlsx 文件。
我想做的是按区域列过滤数据,并将与区域列中的区域 1 标志关联的所有数据导出到名为“区域 1”的工作表,将与区域 2 标志关联的所有数据导出到名为“的工作表” 2区”。理想情况下,在第二张图像中,突出显示的数据是当前“Zone1”工作表中显示的唯一数据,未突出显示的数据将显示在工作表“Zone2”中
我正在使用以下代码来提取数据、合并和导出。
import pandas as pd
import numpy as np
import glob
glob.glob("/Users/xxx/Desktop/PythonTests/Test_Zone*.xlsx")
all_data = pd.DataFrame()
for f in glob.glob("/Users/xxx/Desktop/PythonTests/Test_Zone*.xlsx"):
df = pd.read_excel(f)
all_data = all_data.append(df,ignore_index=True)
all_data.to_excel("/Users/xxx/Desktop/merged.xlsx",index=False)
解决方案
假设您有一个df
包含所有数据的数据框 (如果您已将其保存为 excel 文件,则可以使用df = pd.read_excel('path_to_file.xlsx')
),您可以使用以下代码对您的数据框进行子集化Zone
并将每个生成的子集数据框字典df_dict
:
df_dict = {}
for zone in df['Zone'].unique():
zone_df = df[df['Zone'] == zone]
df_dict[zone] = zone_df
一旦你有了这本字典,你就可以使用pd.ExcelWriter
并将to_excel
你的数据框写入一个单独的 Excel 文件表中:
def save_xlsx(df_dict, path):
"""
Save a dictionary of dataframes to an excel file, with each dataframe as a seperate page
"""
with pd.ExcelWriter(path) as writer:
for key in df_dict:
df_dict[key].to_excel(writer, key, index=False)
writer.save()
调用该函数将为您提供所需的结果:
save_xlsx(df_dict, 'path_to_file.xlsx')
如果您想去掉工作表名称中的空格(如您在示例中所做的那样),您可以相应地修改save_xlsx
函数:
df_dict[key].to_excel(writer, key.replace(' ',''), index=False)
推荐阅读
- java - ReduceOps.makeRef 源代码中return 语句之后的这段代码有什么作用?
- javafx - 如何从 FXML JavaFX 设置节点?
- d3.js - 尝试为周六至周六的高点和低点创建 D3.js 图表
- javascript - 将两个时间线数组合并为一个
- sql-server - SQL Server 查询关于用联合连接 2 个表
- javascript - 难以理解 Javascript 代码片段
- django - Django request.POST.get 不保存到模型字段
- java - java中的循环检测
- python - 在 django 中,在任何地方的 python 上进行媒体部署的正确设置是什么
- python - Django先调用长路径后调用错误路径