python - Pandas:当具有多种日期格式时,如何将系列格式化为日期时间
问题描述
我正在尝试将所有日期转换为 datetime 数据类型,但我有一个具有两种不同格式的系列。
语境
我无法控制我们如何接收这个数据集。%d/%m/%Y
不幸的是,我们的客户使用格式将其发送给我们。我正在从 excel 导入数据,但 excel 格式化了一些日期,以便将其导入为 '%Y/%m/%d %H:%M:%S'。我将日期列转换为字符串,下面是我尝试过的。
我的代码
import pandas as pd
dates_str = pd.Series(['2020-03-01 00:00:00', '23/01/20', '2020-06-01 00:00:00', '24/01/20', '2020-06-25 00:00:00', '13/01/20'])
date_formats = ['%Y/%m/%d %H:%M:%S', '%d/%m/%Y']
for date_format in date_formats:
try:
dates_str = pd.to_datetime(arg=dates_str, format=date_format) # try to get the date
break # if correct format, don't test any other formats
except ValueError:
pass # if incorrect format, keep trying other formats
我知道它不起作用的原因是 Try except 异常处理程序没有遍历每一行。我知道我可以自己循环遍历每一行,但这绝对不是最有效的方法。
解决方案
如果您在 dates_str 系列上应用 pd.to_datetime,它会将类型转换为 M8,这是一种特定的日期时间类型。这还不够好吗?:)
推荐阅读
- django - UrlGatewayLogin 未返回 HttpResponse 对象。它返回 None 而不是
- php - Atom PHP debug does not navigate to or highlights other files
- android - 无法启动 Gradle 守护程序。由于非 ASCII 字符,项目不会加载
- python - QuantLib-Python 无法检测到 QuantLib 安装和致命错误 C1083
- android - How to load webview in recyclerview?
- android - Android Studio 3.1.2:无法解决:运行时
- c++ - 指向静态常量对象的共享指针?
- java - 使用 JSON 模式或等价物验证 Java POJO?
- c++ - 表达式模板需要冗余重载
- ios - 如何在 Swift 中从扩展调用 UIViewController 的函数