pandas - 标题中缺少值的read_csv

时间:2015-12-23 21:49:37

标签: python pandas

我有这种csv文件:

date,a,b,c
2014,12,29,7,12,45
2014,12,30,7,13,12
2014,12,31,6.5,6,5

因此第一行没有明确指定所有列,并假设您了解日期是前3列。

如何告诉read_csv将前三列视为一个日期列(同时保留其他标签)?

1 个答案:

答案 0 :(得分:2)

如果使用parse_dates参数,则可以将列直接解析为日期。

来自docs

  

parse_dates:布尔值,整数或名称列表,列表或dict列表,默认为False

     

如果为真 - >尝试解析索引。如果[1,2,3] - >尝试将第1,2,3列分别解析为单独的日期列。如果[[1,3]] - >结合   第1列和第3列,并解析为单个日期列。 {'foo':[1,3]} - >   将列1,3解析为日期并调用结果'foo'存在快速路径   对于iso8601格式的日期。

对于您的文件,您可以执行以下操作:

pd.read_csv(file_path, names=['y', 'm', 'd', 'a', 'b', 'c'], header=0,
    parse_dates={'date': [0, 1, 2]}, index_col='date', )

              a   b   c
date                   
2014-12-29  7.0  12  45
2014-12-30  7.0  13  12
2014-12-31  6.5   6   5

标题中缺少值的内容通过传递names参数和header=0(覆盖现有标题)来解决。然后可以指定应将哪些列解析为日期。

请参阅另一个示例here