Превратите лист Xlsxwriter в Pandas Dataframe

У меня есть DataFrame, прочитанный из листа Excel, в котором я сделал несколько новых столбцов для использования Xlsxwriter. Теперь мне нужно отфильтровать этот новый набор данных, используя новый столбец, который я создал в Xlsxwriter (кстати, это столбец даты). Есть ли способ снова превратить этот новый рабочий лист в фрейм данных, чтобы я мог фильтровать новый столбец? Я постараюсь предоставить любой полезный код:

export = "files/extract.xlsx"
future_days = 12
writer = pd.ExcelWriter('files/new_report-%s.xlsx' % (date.today()), engine ='xlsxwriter')
workbook = writer.book
df = pd.read_excel(export)
df.to_excel(writer, 'Full Log', index=False)
log_sheet = writer.sheets['Full Log']

new_headers = ('todays date', 'Milestone Date')
log_sheet.write_row('CW1', new_headers)

# This for loop just writes in the formula for my new columns on every line
        for row_num in range(2, len(df.index)+2):
            log_sheet.write_formula('CX' + str(row_num),'=IF(AND($BS{0}>1/1/1990,$BT{0}<>"Yes"),IF($BS{0}<=$CW{0},$BS{0},"Date In Future"),IF(AND($BW{0}>1/1/1990,$BX{0}<>"Yes"),IF($BW{0}<=CW{0},$BW{0},"Date In Future"),IF(AND($CA{0}>1/1/1990,$CCW{0}<>"Yes"),IF($CA{0}<=CW{0},$CA{0},"Date In Future"),IF(AND($CE{0}>1/1/1990,$CF{0}<>"Yes"),IF($CE{0}<CW{0},$CE{0},"Date In Future"),IF(AND($CI{0}>1/1/1990,$CJ{0}<>"Yes"),IF($CI{0}<CW{0},$CI{0},"Date In Future"),IF(AND($CM{0}>1/1/1990,$CN{0}<>"Yes"),IF($CM{0}<CW{0},$CM{0},"Date In Future"),"No Date"))))))'.format(row_num))
            log_sheet.write_formula('CW' + str(row_num), '=TODAY()+' + str(future_days))
            log_sheet.write_formula('CY' + str(row_num), '=IF(AND(AI{0}>DATEVALUE("1/1/1900"), AH{0}>DATEVALUE("1/1/1900"),A{0}<>"Test",A{0}<>"Dummy Test"),NETWORKDAYS(AH{0},AI{0}-1),"Test")'.format(row_num))

Итак, теперь, когда все сделано, мне нужно отфильтровать этот лист «полного журнала», чтобы он получал только данные, в которых значения в новом столбце даты вехи прошли сегодняшнюю дату. Я использовал для этого Xlsxwriters Autofilter, но он мне не нравится, так как на самом деле он не применяет фильтр. просто устанавливает его.


person King    schedule 03.11.2016    source источник


Ответы (1)


Вы можете вызвать функцию сохранения на писателе, а затем загрузить файл в новый кадр данных.

writer.save()
df2 = pd.read_excel('Full Log')
person Robert Christie    schedule 03.11.2016
comment
Я получаю FileNotFoundError: [Errno 2] No such file or directory: 'Full Log' Вы уверены, что можно прочитать один созданный лист? - person King; 03.11.2016