Datetime.strftime()修改不正确?

时间:2019-06-20 17:26:33

标签: python excel pandas numpy datetime

我正在尝试使用strftime将列表列表中的datetime对象更改为字符串,但是对字符串的转换令人困惑。具体来说,我正在尝试将其格式化为%H:%M

我已经用Pandas解析了一个Excel文件,并使用NumPy将DataFrame转换为列表列表。

这是我代码的相关部分

import pandas as pd
import datetime
import time

... 

dataframe = pd.read_excel(download_file, skiprows=4)
location_logs = dataframe.to_numpy().tolist()

for log in location_logs:
    for val in log:
        if type(val) == datetime.datetime:
            val = val.strftime("%H:%M")

该循环可正确识别日期时间对象,因为条件内的一条打印语句会匹配数据,甚至会打印格式化的字符串而不是日期时间对象。

但是,如果我打印诸如location_logs[0]之类的列表,它将打印在嵌套列表中找到的日期时间对象而不是字符串,即打印datetime.datetime(2019,6,17,23,59)而不是预期的23:59

我要转换日期时间对象错误吗?列表大小是否可能引起问题?大约有62,000个列表,每个列表中有7个元素。

1 个答案:

答案 0 :(得分:1)

也许尝试类似的事情:

location_logs = [datetime.datetime(2009, 9, 12, 11, 23, 44), datetime.datetime(2019, 7, 10, 6, 21, 15)]

for i in range(len(location_logs)):
    if type(location_logs[i]) == datetime.datetime:
        location_logs[i] = location_logs[i].strftime("%H:%M")

location_logs

结果:

['11:23', '06:21']