pandas:read_csv仅排除某些行

ard*_*dms 3 python csv dataframe pandas

我正在尝试导入一个如下所示的 csv 文件

     Irrelevant row
"TIMESTAMP","RECORD","Site","Logger","Avg_70mSE_Avg","Avg_60mS_Avg",
"TS","RN","","","metres/second","metres/second",
"","","Smp","Smp","Avg","Avg",
"2010-05-18 12:30:00",0,"Sisters",5068,5.162,4.996
"2010-05-18 12:40:00",1,"Sisters",5068,5.683,5.571
Run Code Online (Sandbox Code Playgroud)

第二行是标题,但第 0、2、3 行不相关。我现在的代码是:

parse = lambda x: datetime.strptime(x, '%Y-%m-%d %H:%M:%S')

df = pd.read_csv('data.csv', header=1, index_col=['TIMESTAMP'],
                 parse_dates=['TIMESTAMP'], date_parser = parse)
Run Code Online (Sandbox Code Playgroud)

问题是,由于第 2 行和第 3 行没有正确的日期,我收到一个错误(或者至少我认为这是错误)。

是否可以使用类似skiprows, 但对于不在文件开头的行来排除这些行?或者您还有其他建议吗?

Ale*_*ley 6

您可以使用skiprows关键字忽略行:

pd.read_csv('data.csv', skiprows=[0, 2, 3], 
             index_col=['TIMESTAMP'], parse_dates=['TIMESTAMP'])
Run Code Online (Sandbox Code Playgroud)

对于您的样本数据,其中给出:

                     RECORD     Site  Logger  Avg_70mSE_Avg  Avg_60mS_Avg
TIMESTAMP                                                                
2010-05-18 12:30:00       0  Sisters    5068          5.162         4.996
2010-05-18 12:40:00       1  Sisters    5068          5.683         5.571
Run Code Online (Sandbox Code Playgroud)

第一个解析的行 ( 1) 成为标题,并且read_csv的默认解析器正确解析时间戳列。