Python 在csv文件中处理不同格式的时间戳

Python 在csv文件中处理不同格式的时间戳,python,pandas,csv,Python,Pandas,Csv,我有一个csv文件,其中包含具有以下时间戳格式的数据:“%Y-%d-%m%H:%m:%S”。我已经创建了用python解析这些datetimes的代码: 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”,

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

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”不匹配


我怎么能解决这个问题?我可以使用其他解析器吗?

如果这些是唯一的变体,您可以定义一个解析器而不是使用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)