如何将 Dataframe 的字符串日期时间转换为日期时间

时间:2021-04-05 11:14:13

标签: python pandas dataframe datetime

我目前正在处理一个包含日期时间和时间戳的 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']

现在我想将这些字符串转换为日期时间并从中找到最早的日期。我在日期时间数据帧方面没有太多经验,所以我不知道该怎么做。有什么建议吗?

3 个答案:

答案 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))