Как экспортировать фрейм данных, чтобы преуспеть с листами, основанными на значениях в столбце - PullRequest
0 голосов
/ 12 июля 2019

Я создал фрейм данных в Python на основе пометки нескольких файлов Excel, и теперь я хотел бы экспортировать эти объединенные данные в один файл .xlsx с несколькими листами на основе значений в столбце, и эти листы были названы в честь значения в столбце.

, используя примеры из изображений ниже, в настоящее время я могу экспортировать все данные в файл .xlsx.

Я хотел бы отфильтровать данные по столбцу зоны и экспортировать все данные, связанные с флагом Zone1 в столбце Zone, на лист с именем «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)

What I currently can export

What I'd like to export

Ответы [ 2 ]

1 голос
/ 12 июля 2019

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

Вот код, который я пробовал, который экспортировал только 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')
...