Предполагая, что у вас есть фрейм данных, 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)