2016-11-03 3 views
1

Xlsxwriter를 사용하여 몇 가지 새로운 열을 작성한 엑셀 시트에서 읽은 DataFrame이 있습니다. 이제 필자는 Xlsxwriter에서 만든 새로운 열 (btw라는 날짜 열)을 사용하여이 새로운 데이터 집합을 필터링해야합니다. 이 새로운 워크 시트를 다시 데이터 프레임으로 변환하여 새 열을 필터링 할 수 있습니까? 모든 나는 단지 새로운 이정표 날짜 열의 값은 날짜를 통과 한 데이터를 얻을 수 있도록 시트를이 "전체 로그를"필터링해야 할 사용자들은 이제Xlsxwriter 시트를 Pandas Dataframe으로 바꿈

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를 사용했지만 실제로 필터를 적용하지 않기 때문에 나는 그것을 좋아하지 않는다. 그냥 설정합니다. [errno를 2] 해당 파일이나 디렉토리 : '전체 로그' `당신이 있습니까

답변

0

그런 다음

writer.save() 
df2 = pd.read_excel('Full Log') 
+0

내가 FileNotFoundError는'얻을 새로운 dataframe에 파일을로드 호출 작가에 기능을 절약 할 수 있습니다 하나의 생성 된 워크 시트를 읽을 수 있습니까? – King

관련 문제