Python Datetime.strftime()未正确修改?

Python Datetime.strftime()未正确修改?,python,excel,pandas,numpy,datetime,Python,Excel,Pandas,Numpy,Datetime,我试图使用strftime将列表中的datetime对象更改为字符串,但转换为字符串的操作令人困惑。具体来说,我正在尝试将其格式化为%H:%m 我用Pandas解析了一个Excel文件,并使用NumPy将数据框转换为列表列表 这是我代码的相关部分 import pandas as pd import datetime import time ... dataframe = pd.read_excel(download_file, skiprows=4) location_logs = da

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

我用Pandas解析了一个Excel文件,并使用NumPy将数据框转换为列表列表

这是我代码的相关部分

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")
循环将datetime对象正确标识为条件匹配数据中的打印语句,甚至打印格式化字符串而不是datetime对象

但是,如果我打印一个列表,例如
location\u logs[0]
,它将打印嵌套列表中的datetime对象而不是字符串,即打印
datetime.datetime(2019,6,17,23,59)
,而不是我预期的
23:59


我是否要错误地转换datetime对象?列表的大小是否可能导致问题?共有62k个列表,每个列表中有7个元素。

可以尝试以下方法:

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']

您需要枚举循环并替换每个索引处的值
val=val.strftime(“%H:%M”)
是一个赋值,与列表中的实际项目没有任何链接。如果日期都在一列中,您只需执行
df[“date\u col”].dt.strftime(“%H:%M”)
。在熊猫中循环通常效率很低。你能提供一些示例数据吗?嗯,我想把我的编辑回滚。这个问题实际上并不涉及它们,而是python的一个基本问题。但是这个问题最好在pandas内解决,我想
for val in log:
-
val
不是指向
log
中元素的指针,而是一个副本。因此,更改它对
log
没有影响。我建议您不要试图更改正在迭代的集合,而是创建一个副本并在副本中进行更改。您只需将字符串赋给一个变量,然后对其不做任何操作。列表及其项与以前相同。