【发布时间】:2020-09-04 13:13:36
【问题描述】:
我正在努力让pd.to_datetime() 接受多种日期格式并解析它们。我认为它以不同但相似的格式接收日期,但它似乎没有这样做。以下是两个基本示例:
9/3/2020
9/2/20
这是我的脚本:
try:
datetime.datetime.strptime(row['assignment_name'][:row['assignment_name'].find(' ')], "%m/%d/%y")
due_date = row['assignment_name'][:row['assignment_name'].find(' ')]
print(due_date)
data_normalized.at[index, 'due_date'] = pd.to_datetime(due_date, format='%m/%d%y', errors='ignore')
except ValueError as err:
data_normalized.at[index, 'due_date'] = None
print(err)
continue
它可以很好地读取较短的格式并对其进行解析,但在较长的日期格式上会抛出此错误:unconverted data remains: 20。
我知道我可以稍微清理一下数据以摆脱全年,但是有没有办法在 pandas 函数中添加多个格式参数?或者以多种格式阅读的替代解决方案是什么?
【问题讨论】:
-
为什么不先尝试转换日期值,然后通过
pd.to_datetime()运行这些值? -
它不可能添加多种格式,您必须清理一种格式的数据。因为,如果 Datetime 支持多种格式,函数会被混淆以获取正确的格式值。
-
to_datetime函数适用于您提供的两个日期(pandas 1.0)。pd.to_datetime(['9/3/2020', '9/2/20'], errors='coerce') gives DatetimeIndex(['2020-09-03', '2020-09-02'], dtype='datetime64[ns]', freq=None)。也许我错过了一些元素。