首页 > 解决方案 > 如何使用基于列中的值的工作表将数据框导出到 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)

我目前可以导出的内容

我想导出什么

标签: pythonexport-to-excel

解决方案


假设您有一个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)

推荐阅读