Как экспортировать DataFrame в несколько листов файла Excel? - PullRequest
0 голосов
/ 21 апреля 2020

Предположим, что у меня есть кадр данных из 8000 строк x 7 столбцов.

Обзор данных

data = pd.read_excel('tmp.xlsx')
data.head(10)
ID          Type    CatID   Val1    val2    Comment      Disposition
20192658     N       52     256     358     Processing    In Progress
20192658     N       53     258     365     repairing     In Progress
20192658     N       53     258     365     Processed     Resloved
20192753     K       98     324     347     Processing    In Progress
20192753     K       87     365     378     Repairing     In Progress
20192753     K       84     357     364     Processed     Resolved
20192854     J       98     324     347     Processing    In Progress
20192854     J       87     365     378     Repairing     In Progress
20192854     J       84     357     364     Processed     Resolved
20192789     M       96     369     345     Processing    In Progress

В кадре данных содержится около 197 уникальных идентификаторов.

Я пытаюсь экспортировать данные в Excel с каждым идентификатором на отдельный лист.

На данный момент я вручную фильтрую данные и добавляю их на каждый лист. Есть ли простой и лучший подход к выполнению soo в python?

Требуемый вывод enter image description here enter image description here

Ответы [ 2 ]

1 голос
/ 21 апреля 2020

Учитывая ваш фрейм данных data:

  • Итерирует по каждому уникальному идентификатору и разбивает фрейм данных для этих значений, а затем сохраняет в файл.
import pandas as pd

with pd.ExcelWriter('data.xlsx') as writer:
    for i, value in enumerate(data.ID.unique(), start=1):
        data[data.ID == value].to_excel(writer, index=False, sheet_name=f'Sheet{i}')
  • Я думаю, что вам лучше было бы называть на каждом листе значение идентификатора вместо Sheet1 и т. Д. c. например, sheet_name=f'{value}'
    • Это позволит вам определить, на каком листе находится каждый ID.
    • pandas.DataFrame.to_excel
import pandas as pd

with pd.ExcelWriter('data.xlsx') as writer:
    for value in data.ID.unique():
        data[data.ID == value].to_excel(writer, index=False, sheet_name=f'{value}')
0 голосов
/ 21 апреля 2020

Вам потребуется разделить нужные разделы файла на каждом листе и запустить метод ExcelWriter с помощью оператора with

output_name = ' '
with pd.ExcelWriter(output_name) as writer:
    data.iloc[0:4].to_excel(writer, sheet_name='my_sheet1')
    data.iloc[4:8].to_excel(writer, sheet_name='my_sheet2')

Синтаксис для нарезки выходных данных метода read_excel может быть неправильным но to_excel - это метод DataFrame, пока вы получаете нужные разделы данных объекта, это должно работать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...