pandas: read_csv 仅排除某些行
pandas: read_csv excluding only certain rows
我正在尝试导入如下所示的 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
第二行是 header 但第 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)
问题是因为第 2 行和第 3 行没有正确的日期,所以我得到了一个错误(或者至少我认为这是错误)。
是否可以使用 skiprows
之类的方法排除这些行,但对于不在文件开头的行?或者你有什么其他的建议吗?
您可以使用 skiprows
关键字忽略以下行:
pd.read_csv('data.csv', skiprows=[0, 2, 3],
index_col=['TIMESTAMP'], parse_dates=['TIMESTAMP'])
您的样本数据给出:
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
第一个解析的行 (1
) 成为 header 并且 read_csv
的默认解析器正确解析时间戳列。
我正在尝试导入如下所示的 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
第二行是 header 但第 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)
问题是因为第 2 行和第 3 行没有正确的日期,所以我得到了一个错误(或者至少我认为这是错误)。
是否可以使用 skiprows
之类的方法排除这些行,但对于不在文件开头的行?或者你有什么其他的建议吗?
您可以使用 skiprows
关键字忽略以下行:
pd.read_csv('data.csv', skiprows=[0, 2, 3],
index_col=['TIMESTAMP'], parse_dates=['TIMESTAMP'])
您的样本数据给出:
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
第一个解析的行 (1
) 成为 header 并且 read_csv
的默认解析器正确解析时间戳列。