2016-07-18 5 views
0

私は(MCVE改正に基づいてタイトル)このようなsummaryDFと呼ばれるデータフレームを持っています別のthresholdのハイパーパラメータを持つファイルで、3番目のファイルの最後に精度、F1、および呼び出しの結果をファイルの最後に追加します。したがって、たとえば、次の反復は、ファイルはのように見えるようにする必要がありますの取得を呼び出すとStopIterationエラー()のpython

  f1   precision recall threshold 
A  0.600321 0.739130 0.111 0.001 
B  0.096692 0.826087 0.2321 0.001 
C  0.072539 0.875000 0.4531 0.001 
D  0.128079 0.722222 0.2311 0.001 
A  0.121211 0.312214 0.3213 0.005 
B  0.214422 0.432332 0.2311 0.005 
C  0.081111 0.121211 0.1322 0.005 
D  0.012121 0.212444 0.6546 0.005 

これは私の現在のコードです:

with open(data/output/test/summaryEval.csv, 'w+') as summaryCSV: 
    try: 
     df_csv = pd.read_csv(summaryCSV,encoding='utf-8',engine='python') 
    except ValueError as v: 
     print v 
     summaryDF.to_csv(path_or_buf=summaryCSV, encoding='utf-8') 
     summaryCSV.close() 
    else: 
     summaryDF = pd.concat([df_csv,summaryDF],axis=1) 
     summaryDF.to_csv(path_or_buf=summaryCSV,encoding='utf-8',mode='a') 
     summaryCSV.close() 

間違って起こっていますか?エラーは:

Traceback (most recent call last): 
    File "src/main/logisticBagOfWords.py", line 477, in <module> 
    df_csv = pd.read_csv(summaryCSV,encoding='utf-8',engine='python') 
    File "/Users/dhruv/anaconda/lib/python2.7/site-packages/pandas/io/parsers.py", line 474, in parser_f 
    return _read(filepath_or_buffer, kwds) 
    File "/Users/dhruv/anaconda/lib/python2.7/site-packages/pandas/io/parsers.py", line 250, in _read 
    parser = TextFileReader(filepath_or_buffer, **kwds) 
    File "/Users/dhruv/anaconda/lib/python2.7/site-packages/pandas/io/parsers.py", line 566, in __init__ 
    self._make_engine(self.engine) 
    File "/Users/dhruv/anaconda/lib/python2.7/site-packages/pandas/io/parsers.py", line 711, in _make_engine 
    self._engine = klass(self.f, **self.options) 
    File "/Users/dhruv/anaconda/lib/python2.7/site-packages/pandas/io/parsers.py", line 1429, in __init__ 
    self.columns, self.num_original_columns = self._infer_columns() 
    File "/Users/dhruv/anaconda/lib/python2.7/site-packages/pandas/io/parsers.py", line 1644, in _infer_columns 
    line = self._buffered_line() 
    File "/Users/dhruv/anaconda/lib/python2.7/site-packages/pandas/io/parsers.py", line 1771, in _buffered_line 
    return self._next_line() 
    File "/Users/dhruv/anaconda/lib/python2.7/site-packages/pandas/io/parsers.py", line 1802, in _next_line 
    orig_line = next(self.data) 
StopIteration 

答えて

0

ファイルに情報があるかどうかにかかわらず、ファイルがあるかどうかにかかわらず、同じモードでファイルを開いているという問題がありました。したがって、私はこれらの場合に応じて異なるモードで開きます。

try: 
     if os.stat(sys.argv[5]).st_size > 0: 
      with open(sys.argv[5], 'a') as f: 
       summaryDF.to_csv(path_or_buf=f,encoding='utf-8',mode='a',header=False) 
       f.close() 
     else: 
      print "empty file" 
      with open(sys.argv[5], 'w+') as f: 
       summaryDF.to_csv(path_or_buf=f,encoding='utf-8') 
       f.close() 
    except OSError: 
     print "No file" 
     with open(sys.argv[5], 'w+') as f: 
      summaryDF.to_csv(path_or_buf=f,encoding='utf-8') 
      f.close() 
関連する問題