我目前正在处理一个包含日期时间和时间戳的 csv 文件。数据框如下所示:
print(df[:10])
[0 '2019-10-10 21:59:17.074007' '2015-10-13 00:55:55.544607'
'2017-05-24 06:00:15.959202' '2016-12-07 09:01:04.729686'
'2019-05-29 11:16:44.130063' '2017-01-19 16:06:37.625964'
'2018-04-07 19:42:43.708620' '2016-06-28 03:13:58.266977'
'2015-03-21 00:03:07.704446']
现在我想将这些字符串转换为日期时间并从中找到最早的日期。我在日期时间数据帧方面没有太多经验,所以我不知道该怎么做。有什么建议吗?
答案 0 :(得分:2)
可以转换字符串to_datetime
,然后取min
:
dates = ['2019-10-10 21:59:17.074007', '2015-10-13 00:55:55.544607',
'2017-05-24 06:00:15.959202', '2016-12-07 09:01:04.729686',
'2019-05-29 11:16:44.130063', '2017-01-19 16:06:37.625964',
'2018-04-07 19:42:43.708620', '2016-06-28 03:13:58.266977',
'2015-03-21 00:03:07.704446']
pd.to_datetime(dates).min()
输出:
Timestamp('2015-03-21 00:03:07.704446')
更新
如果要跨数据框的所有列执行此操作:
df.apply(pd.to_datetime).min().min()
答案 1 :(得分:1)
使用 to_datetime()
方法将这些值转换为日期时间:
df=pd.to_datetime(df,errors='coerce')
现在使用 min()
方法查找最早日期:
earliest_date=df.min()
或者你也可以使用 nsmallest()
方法找到最早的日期(这适用于系列):
earliest_date=df.nsmallest(1)
答案 2 :(得分:1)
让我们调用您提到的列表 l
,您可以对其进行迭代并使用 datetime.strptime
解析日期,将它们聚合到一个新列表中并返回最早的:
from datetime import datetime
parsed_dates = []
for d in l:
parsed_dates.append(datetime.strptime(d, "%Y-%m-%d %H:%M:%S.%f"))
print(min(parsed_dates))