我想从字符串(例如2018-07-16
)中提取日期(例如2018-07-16 10:17:53.460035
)。
字符串有两种格式:"2018-07-16 10:17:53.460035"
和"2018-05-20 14:37:21"
。
当我在提取日期之前使用strptime(d, "%Y-%m-%d %H:%M:%S.%f")
转换字符串时,会弹出此错误:
ValueError: time data '2018-05-20 14:37:21' does not match format
%Y-%m-%d %H:%M:%S.%f'
如何将两种时间格式都转换为DateTime类型并从中提取日期?
答案 0 :(得分:1)
使用来自熊猫的to_datetime
。
import pandas as pd
a = "2018-07-16 10:17:53.460035"
b = "2018-05-20 14:37:21"
print(pd.to_datetime(a).date())
print(pd.to_datetime(b).date())
答案 1 :(得分:0)
第一种格式的末尾不需要.%f
,这就是导致格式错误的原因。
t = "2018-05-20 14:37:21"
strptime(t, "%Y-%m-%d %H:%M:%S")
您需要为其他时间字符串创建另一种格式:
t = "2018-07-16 10:17:53.460035"
strptime(t, "%Y-%m-%d %H:%M:%S.%f")
编辑:这是另一个例子,除了两者
time_stamps = ["2018-05-20 14:37:21", "2018-07-16 10:17:53.460035"]
for stamp in time_stamps:
fmt = "%Y-%m-%d %H:%M:%S"
try:
time = datetime.datetime.strptime(stamp, fmt+".%f")
except ValueError:
time = datetime.datetime.strptime(stamp, fmt)
print(time)