2016-11-03 8 views
1

Xlsxwriterを使用するためにいくつかの新しい列を作成したExcelシートからデータフレームを読み込んでいます。今度は、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

あなたは、私は` FileNotFoundErrorを取得し、新たなデータフレームに

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

をファイルをロードライターに保存機能を呼び出すことができます作成した単一のワークシートを読むことは可能でしょうか? – King

関連する問題