【问题标题】:pandas: read_csv excluding only certain rows熊猫:read_csv 仅排除某些行
【发布时间】:2015-01-02 11:17:37
【问题描述】:

我正在尝试导入如下所示的 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

第二行是标题,但第 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 之类的方式排除这些行,但对于不在文件开头的行?或者你有什么其他建议吗?

【问题讨论】:

    标签: python csv pandas dataframe


    【解决方案1】:

    您可以使用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) 成为标题,read_csv 的默认解析器正确解析时间戳列。

    【讨论】:

    • 非常感谢。我确信会存在一些简单的东西。回家后试试看。
    猜你喜欢
    • 2022-12-17
    • 2013-09-05
    • 2018-01-27
    • 2016-03-30
    • 2019-07-12
    • 2017-08-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多