Напишите файл Excel с именами листов Dynami c на основе условий фильтрации. - PullRequest
0 голосов
/ 21 февраля 2020

У меня небольшая проблема.

Я пытаюсь записать свой готовый файл Excel в Pandas DataFrame и создать разные имена листов на основе критериев фильтрации:

#I created a variable to give me the unique names in the column I want to filter
Different_Versicherer = commissions_df.Versicherer.unique()

# I create an empty list to hold the frames
Versicherer = []*len(Different_Versicherer)

# I tried iterate through the unique column and do the filtering. 
for i in range(len(Different_Versicherer)):
    Versicherer[i] = commissions_df[commissions_df.Versicherer == Different_Versicherer[i]]

Идея фильтрации работает, что не работает является то, что я хочу динамически изменять листы и добавить его в файл Excel.

Подскажите пожалуйста?

1 Ответ

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

Трудно дать ответ без примеров данных, но я думаю, что вы хотите что-то вроде этого:

import pandas as pd
df = pd.DataFrame({'var':['a','a','b','c','c','c'], 'value':[1, 2, 3, 4, 5, 6]})

writer = pd.ExcelWriter('example.xlsx')
for unique_var in df['var'].unique():
    frame = df[df['var'] == unique_var]
    frame.to_excel(writer, sheet_name=unique_var)
writer.save()

Это создает файл Excel с 3 листами ('a', 'b', 'c ') с исходным кадром данных, отфильтрованным для соответствия этому значению в каждом случае.

Это также можно сделать с помощью groupby:

for unique_var, frame in df.groupby('var'):
    # repeat code
...