在csv fi中处理不同格式的时间戳

2024-10-01 22:42:46 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个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: time data '2018-01-07' does not match format '%Y-%d-%m %H:%M:%S'

我怎么能解决这个问题?我可以使用另一种解析器吗


Tags: 文件csv数据lambda代码dfreaddatetime
1条回答
网友
1楼 · 发布于 2024-10-01 22:42:46

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

相关问题 更多 >

    热门问题