csv - 使用 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
解决方案
csv.DictReader
返回一个迭代器,它dict
为 csv 文件中的每一行生成一个。要对每一行的列进行排序,您需要在排序函数中指定该列:
date_sorted = sorted(reader, key=lambda row: datetime.strptime(row['Date'], '%Y-%m-%d'))
要同时对Date
and进行排序Time_UTC
,您可以将它们组合成一个字符串并将其转换为 a datetime
:
date_sorted = sorted(reader, key=lambda row: datetime.strptime(row['Date'] + ' ' + row['Time_UTC'], '%Y-%m-%d %H:%M:%S'))
推荐阅读
- java - 如何在一个变量中组合多个输入文本,它属于管理 bean 中的对象
- javascript - Javascript幻灯片一次显示所有幻灯片
- php - 多维数组中的 Str_replace
- python - 为什么这不在 Dockerfile 中?
- powershell - 通过 OAuth 与 PowerShell 中的 EWS 的应用程序机密进行身份验证
- mysql - SUM COLUMN RESULTS 0 GROUP BY IN SUBQUERIES mysql
- javascript - 为什么我的模态在我的赛普拉斯测试中消失了?
- c++ - 将 C++20 模板化 Lambda 传递给函数,然后调用它
- spring-boot - Springboot Liquibase AWS Aurora DB 应用程序启动问题
- openmdao - 避免分析中的奇异性——OpenMDAO 是否自动启用“完全同步”解决方案?