Python Datetime.strftime()未正确修改?
我试图使用strftime将列表中的datetime对象更改为字符串,但转换为字符串的操作令人困惑。具体来说,我正在尝试将其格式化为%H:%m 我用Pandas解析了一个Excel文件,并使用NumPy将数据框转换为列表列表 这是我代码的相关部分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
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
没有影响。我建议您不要试图更改正在迭代的集合,而是创建一个副本并在副本中进行更改。您只需将字符串赋给一个变量,然后对其不做任何操作。列表及其项与以前相同。