首页 > 解决方案 > 处理 csv 文件中不同格式的时间戳

问题描述

我有一个 csv 文件,其中包含具有以下时间戳格式的数据:“%Y-%d-%m %H:%M:%S”。我已经创建了在 python 中使用 pandas 解析这些日期时间的代码:

mydateparser = lambda x: pd.datetime.strptime(x, "%Y-%d-%m %H:%M:%S")
df = pd.read_csv(filename, parse_dates = [3], date_parser = mydateparser)

问题是一天开始的每个数据点的格式都像这样“%Y-%d-%m”,所以不是“2018-01-07 00:00:00”而是“2018- 01-07”。这些数据点当然会给我这个错误:

ValueError:时间数据“2018-01-07”与格式“%Y-%d-%m %H:%M:%S”不匹配

我该如何解决这个问题?我可以使用替代解析器或其他东西吗?

标签: pythonpandascsv

解决方案


如果这些是唯一的变体,您可以只定义一个解析器而不是使用 lambda:

def my_date_parser(d):

    try:
        result = pd.datetime.strptime(d, "%Y-%d-%m %H:%M:%S")
    except ValueError:
        result = pd.datetime.strptime(d, "%Y-%d-%m")

    return result


df = pd.read_csv(filename, parse_dates=[3], date_parser=my_date_parser)

推荐阅读