首页 > 解决方案 > 使用 csv 库排序,错误提示我的日期与 '%Y-%m-%d' 格式不匹配

问题描述

我正在尝试先按日期对 CSV 进行排序,然后再按时间排序。有了 Pandas,使用df = df.sort_values(by=['Date', 'Time_UTC']). 在 csv 库中,代码是(来自这里):

with open ('eqph_csv_29May2020_noF_5lines.csv') as file:
    reader = csv.DictReader(file, delimiter=',') 
    date_sorted = sorted(reader, key=lambda Date: datetime.strptime('Date', '%Y-%m-%d'))
    print(date_sorted)

日期时间文档清楚地表明这些代码是正确的。这是一个示例 CSV(无分隔符):

Date    Time_UTC    Latitude    Longitude
2020-05-28  05:17:31    16.63   120.43
2020-05-23  02:10:27    15.55   121.72
2020-05-20  12:45:07    5.27    126.11
2020-05-09  19:18:12    14.04   120.55
2020-04-10  18:45:49    5.65    126.54

标签: csvdatetimestrptime

解决方案


csv.DictReader返回一个迭代器,它dict为 csv 文件中的每一行生成一个。要对每一行的列进行排序,您需要在排序函数中指定该列:

date_sorted = sorted(reader, key=lambda row: datetime.strptime(row['Date'], '%Y-%m-%d'))

要同时对Dateand进行排序Time_UTC,您可以将它们组合成一个字符串并将其转换为 a datetime

date_sorted = sorted(reader, key=lambda row: datetime.strptime(row['Date'] + ' ' + row['Time_UTC'], '%Y-%m-%d %H:%M:%S'))

推荐阅读