Pandas read_csv without knowing whether header is present

前端 未结 2 787
日久生厌
日久生厌 2021-02-14 02:31

I have an input file with known columns, let\'s say two columns Name and Sex. Sometimes it has the header line Name,Sex, and sometimes it

2条回答
  •  别那么骄傲
    2021-02-14 03:11

    using new feature - selection by callable:

    cols = ['Name','Sex']
    
    df = (pd.read_csv(filename, header=None, names=cols)
          [lambda x: np.ones(len(x)).astype(bool)
                     if (x.iloc[0] != cols).all()
                     else np.concatenate([[False], np.ones(len(x)-1).astype(bool)])]
    )
    

    using .query() method:

    df = (pd.read_csv(filename, header=None, names=cols)
            .query('Name != "Name" and Sex != "Sex"'))
    

    i'm not sure that this is the most elegant way, but this should work as well:

    df = pd.read_csv(filename, header=None, names=cols)
    
    if (df.iloc[0] == cols).all():
        df = df[1:].reset_index(drop=True)
    

提交回复
热议问题