2016-07-18 2 views
0

У меня есть фрейм данных под названием summaryDF, как это (названия исправленный для MCVE):Получение ошибки StopIteration в read_csv() питон

  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 

Я тогда выполняется пакетный скрипт, который запускает машину обучения трубопровод 3 .py файлы с другим гиперпараметром threshold и в конце третьего файла, я хочу добавить точность, F1 и вызвать результаты в нижней части файла. Так, например, следующая итерация должна сделать файл выглядеть:

  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() 
Смежные вопросы