我是Python新手,想知道是否有人可以帮助我。
我想遍历 pandas 数据框中的日期时间列,同时每次迭代都使用最新时间更新一个变量。假设这是我的数据:
Time
06:12:50
06:13:51
06:13:51
06:13:50
06:14:51
06:14:49
对于我的结果,我希望它看起来像这样:
RecentTime:
06:12:50
06:13:51
06:13:51
06:13:51
06:14:51
06:14:51
我认为代码应该看起来像这样,但我遇到了麻烦,无法弄清楚为什么。这是我的代码:
RecentTime = [] # Store list of most recent time for each row
Index: None # Create empty variable
# Loop through
for index, row in data.iterrows():
index = row['Time'] # Save value as index
if index >= row['Time']: # If time is greater than current row
index = row['Time']
RecentTime.append(index) # Append most recent variable into list
else:
continue
出于某种原因,这是我的结果:
RecentTime
06:12:50
06:13:51
06:13:51
06:13:50
06:14:51
06:14:49
每次通过循环时,您都在检查不等式之前写入变量index
,因此
if index >= row['Time']:
不仅总是True
,而且在检查此不等式之前,您始终将索引设置为等于当前时间。根据您描述中的模式,即所需结果时间永远不会早于上一行,我认为您正在寻找更像这样的东西:
RecentTime = [] # Store list of most recent time for each row
priortime = None
# Loop through
for index, row in data.iterrows():
currenttime = row['Time']
if priortime is None:
priortime = currenttime
if priortime > currenttime: # If prior time is greater than current row
currenttime = priortime
priortime = currenttime
RecentTime.append(currenttime)
最后,行Index: None
应抛出错误SyntaxError: invalid syntax
。假设您要为变量赋值,请使用 Index = None
. index
,小写,已经在数据帧循环中用于引用数据帧中的索引值,因此即使大写的Index
变量不会冲突,也应该将其命名为其他名称。