2015-07-27 2 views
1

У меня есть файл csv, содержащий несколько столбцов, и мне нужны только два с заголовками «адрес» и «порт». Я пробую эту простую функцию с Panda, но получаю ошибки. идеи, что проблема благодаряОбрезать столбцы в CSV с Python и Pandas

входной файл имеет столбцы с заголовками:. Start Time, время окончания, адрес, поставщика, имя хоста, порт, состояние, обслуживание, сценарий, выходные

import pandas as pd 
def trim_scan(infile, outdir): 

    df = pd.read_csv(infile) 
    keep_cols = ["address", "port"] 
    new_df = df[keep_cols] 
    new_df.to_csv(outdir + '/' + 'nmap-ip-ports.csv', index=False) 

trim_scan('nmap-scan.csv', '2015-07-27') 

Это ошибка:

Traceback (most recent call last): 
    File "test3.py", line 64, in <module> 
    trim_scan('nmap-scan.csv', '2015-07-27') 
    File "test3.py", line 59, in trim_scan 
    df = pd.read_csv(infile) 
    File "/Library/Python/2.7/site-packages/pandas/io/parsers.py", line 474, in parser_f 
    return _read(filepath_or_buffer, kwds) 
    File "/Library/Python/2.7/site-packages/pandas/io/parsers.py", line 260, in _read 
    return parser.read() 
    File "/Library/Python/2.7/site-packages/pandas/io/parsers.py", line 721, in read 
    ret = self._engine.read(nrows) 
    File "/Library/Python/2.7/site-packages/pandas/io/parsers.py", line 1170, in read 
    data = self._reader.read(nrows) 
    File "pandas/parser.pyx", line 769, in pandas.parser.TextReader.read (pandas/parser.c:7544) 
    File "pandas/parser.pyx", line 791, in pandas.parser.TextReader._read_low_memory (pandas/parser.c:7784) 
    File "pandas/parser.pyx", line 844, in pandas.parser.TextReader._read_rows (pandas/parser.c:8401) 
    File "pandas/parser.pyx", line 831, in pandas.parser.TextReader._tokenize_rows (pandas/parser.c:8275) 
    File "pandas/parser.pyx", line 1742, in pandas.parser.raise_parser_error (pandas/parser.c:20691) 
pandas.parser.CParserError: Error tokenizing data. C error: Expected 12 fields in line 6, saw 14 

ответ

1

Проблема возникает из файла CSV, который не является регулярным (не такое же количество полей в каждой строке).

Expected 12 fields in line 6, saw 14 

Другая подсказка о ваших некорректных файле CSV также определяется тем, что вы определили 10 различных полей:

Start Time, End time, address, vendor, hostname, port, state, service, script, output 

Но панд ожидает 12.

Вы можете проверить формат ваших временных меток или любого другого поля, которое включает в себя значение ;. Проверьте наличие заголовков, пропустите плохие строки и т. Д.

Смежные вопросы