[英]How to export a dataframe to excel with sheets based on values in a column
我已经在Python中基于多个Excel文件创建了一个数据框,现在我想将合并的数据导出到一个具有多个工作表的.xlsx文件中,这些工作表基于一列中的值,并以该列中的值命名这些工作表。
使用下面图像中的示例,我目前可以将所有数据导出到.xlsx文件。
我想做的是按区域列过滤数据,并将与区域列中与Zone1标志关联的所有数据导出到名为“ Zone1”的工作表,并将与标志Zone2相关联的所有数据导出到名为“工作表”的工作表Zone2”。 理想情况下,在第二张图像中,突出显示的数据是当前“ 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
保存到字典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)
这是我尝试仅导出Zone2而不是1和2的代码”
import pandas as pd
import numpy as np
import glob
#list
glob.glob("/Users/TTT/Desktop/PythonTests/Test_Zone*.xlsx")
ALLDATA = pd.DataFrame()
for f in glob.glob("/Users/TTT/Desktop/PythonTests/Test_Zone*.xlsx"):
df = pd.read_excel(f)
ALLDATA = ALLDATA.append(df,ignore_index=True)
df_dict = {}
for zone in df['Zone'].unique():
zone_df = df[df['Zone'] == zone]
df_dict[zone] = zone_df
save_xlsx(df_dict, '/Users/TTT/Desktop/PythonTests/ExportTest.xlsx')
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.