【问题标题】:pandas - read_csv with missing values in headlinepandas - 标题中缺少值的 read_csv
【发布时间】:2015-12-24 06:52:13
【问题描述】:

我有这种 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 将前三列视为一个日期列(同时保留其他标签)?

【问题讨论】:

标签: python pandas


【解决方案1】:

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

来自docs

parse_dates : 布尔值,整数或名称列表,列表列表或字典,默认为 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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-03-25
    • 2018-03-14
    • 1970-01-01
    • 2016-12-12
    • 2018-04-22
    • 2013-05-31
    • 2017-02-10
    相关资源
    最近更新 更多