将 2d 列表转换为 Python 中的日期时间,然后绘制

Convert 2d list to datetime in Python and then plot

我正在尝试将一个巨大的二维字符串日期列表绘制到 x 轴上,但是刻度太多了。

这是列表的简短示例

[['2021-10-01 10:25:42 PM','2021-10-01 10:31:13 PM' '2021-10-01 10:31:13 PM'],['2021-10-01 10:25:42 PM','2021-10-01 10:31:13 PM' '2021-10-01 10:31:13 PM']]

我想将此列表转换为日期时间对象,以便减少这些刻度线。

我不确定如何在二维列表上执行此操作。

例如,这不起作用,因为它在列表中。

dates_list = [datetime.strptime(date, '"%Y-%m-%d"').date() for date in valueTime_list]

由于无法将 strptime 应用于列表,因此必须在第二个循环中遍历嵌套列表。 此外,您的初始 valueTime_list 中缺少一些逗号,并且 strptimeformat 必须与列表之一匹配:

from datetime import datetime
valueTime_list = [['2021-10-01 10:25:42 PM','2021-10-01 10:31:13 PM', '2021-10-01 10:31:13 PM'],['2021-10-01 10:25:42 PM','2021-10-01 10:31:13 PM', '2021-10-01 10:31:13 PM']]

dates_list = [datetime.strptime(date, '%Y-%m-%d %I:%M:%S %p').date()
              for date_lst in valueTime_list for date in date_lst]
print(dates_list)

输出:

[datetime.date(2021, 10, 1), datetime.date(2021, 10, 1), datetime.date(2021, 10, 1), datetime.date(2021, 10, 1), datetime.date(2021, 10, 1), datetime.date(2021, 10, 1)]

编辑:如果您想保留二维结构,请在您的理解中添加括号:

dates_list = [[datetime.strptime(date, '%Y-%m-%d %I:%M:%S %p').date() for date in date_lst]
              for date_lst in valueTime_list]

如果您使用的是 pandas,则可以使用 pd.to_datetime 转换器:

dates_list = [pd.to_datetime(lst, infer_datetime_format=True) for lst in valueTime_list]

这将产生与 DateTimeIndex 个对象(日期时间对象系列)相同的二维列表。