使用Panda read_csv列出索引超出范围

Ner*_*ali 6 python csv pandas

我试图通过csv文件中的python脚本读取大数据(数千行),如下所示:

.....
2015-11-03 20:16:28,000;63,62;
2015-11-03 20:16:29,000;63,75;
2015-11-03 20:16:30,000;63,86;
2015-11-03 20:16:31,000;64,25;
Run Code Online (Sandbox Code Playgroud)

但似乎其中一个文件有额外的空行,有196541465个空格 - 然后当用pandas lib的read_csv读取它时代码崩溃了.

     File "/usr/lib/python2.7/dist-packages/pandas/core/frame.py", line 4221, in append
        elif isinstance(other, list) and not isinstance(other[0], DataFrame):
IndexError: list index out of range
Run Code Online (Sandbox Code Playgroud)

我正在使用以下命令:

data = pd.read_csv(input_file,skiprows = [0],usecols=[0,1,2],delimiter=';',decimal=',', names = [ 'date','angle','Unnamed'],na_filter = False,parse_dates = [0],date_parser = reformat_date,error_bad_lines = False,skip_blank_lines=True)#,nrows = 8191)
Run Code Online (Sandbox Code Playgroud)

罪魁祸首的行是8192',当限制行(by rows = 8191)它工作得很好.我已尝试过doc中的许多选项,但它似乎不起作用!任何的想法?

Mar*_*man 9

根据下面的 Mitjas 评论进行编辑。

我只是遇到了同样的问题,index_col = False但没有奏效。我有 19 列,只有 17 个标题。通过分别读取列和标题然后添加标题名称来解决它。

dfcolumns = pd.read_csv('file.csv',
                        nrows = 1)
df = pd.read_csv('file.csv',
                  header = None,
                  skiprows = 1,
                  usecols = list(range(len(dfcolumns.columns))),
                  names = dfcolumns.columns)
Run Code Online (Sandbox Code Playgroud)

  • @Mitja 太棒了,在答案中添加了这一点。 (2认同)

rog*_*err 6

我收到此错误消息是因为我试图读取一个CSV文件,该CSV文件的标头与列数相比太少(例如10列,但标头只有8个。如果设置index_col=False,pandas不知道如何处理多余的列)