我正在尝试使用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个元素。
答案 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']