Prevent pandas read_csv treating first row as header of column names

前端 未结 2 1765
轻奢々
轻奢々 2020-11-28 15:13

I\'m reading in a pandas DataFrame using pd.read_csv. I want to keep the first row as data, however it keeps getting converted to column names.

相关标签:
2条回答
  • 2020-11-28 15:26

    You want header=None the False gets type promoted to int into 0 see the docs emphasis mine:

    header : int or list of ints, default ‘infer’ Row number(s) to use as the column names, and the start of the data. Default behavior is as if set to 0 if no names passed, otherwise None. Explicitly pass header=0 to be able to replace existing names. The header can be a list of integers that specify row locations for a multi-index on the columns e.g. [0,1,3]. Intervening rows that are not specified will be skipped (e.g. 2 in this example is skipped). Note that this parameter ignores commented lines and empty lines if skip_blank_lines=True, so header=0 denotes the first line of data rather than the first line of the file.

    You can see the difference in behaviour, first with header=0:

    In [95]:
    import io
    import pandas as pd
    t="""a,b,c
    0,1,2
    3,4,5"""
    pd.read_csv(io.StringIO(t), header=0)
    
    Out[95]:
       a  b  c
    0  0  1  2
    1  3  4  5
    

    Now with None:

    In [96]:
    pd.read_csv(io.StringIO(t), header=None)
    
    Out[96]:
       0  1  2
    0  a  b  c
    1  0  1  2
    2  3  4  5
    

    Note that in latest version 0.19.1, this will now raise a TypeError:

    In [98]:
    pd.read_csv(io.StringIO(t), header=False)
    

    TypeError: Passing a bool to header is invalid. Use header=None for no header or header=int or list-like of ints to specify the row(s) making up the column names

    0 讨论(0)
  • 2020-11-28 15:35

    I think you need parameter header=None to read_csv:

    Sample:

    import pandas as pd
    from pandas.compat import StringIO
    
    temp=u"""a,b
    2,1
    1,1"""
    
    df = pd.read_csv(StringIO(temp),header=None)
    print (df)
       0  1
    0  a  b
    1  2  1
    2  1  1
    
    0 讨论(0)
提交回复
热议问题