gpt4 book ai didi

python - 如何避免在Python中嵌套“for循环”?

转载 作者:行者123 更新时间:2023-12-01 03:03:50 25 4
gpt4 key购买 nike

我有以下形式的数据框(df):

        SERV_OR_IOR_ID  IMP_START_TIME   IMP_CLR_TIME     TIME_BIN
0 -1447310116 23:59:32.873000 00:11:28.755000
1 1673545041 00:00:09.182000 00:01:06.912000
2 -743717696 23:59:57.312000 00:00:32.428000
3 -746373244 23:59:57.915000 00:05:33.232000


我将一天中的24小时划分为30分钟的“时间段”,因此第0个时间段将从00:00-00:30开始,从00:30-01:00开始,依此类推。想要根据 'TIME_BIN'属于哪个时间窗口在每行的 'IMP_START_TIME'列中分配一个值。
例如 :
对于行 '1',我将为其赋值 '0',因为它属于时间窗口 '00:00'-00:30

为此,我编写了以下代码:

interval = dt.timedelta(minutes=30)
start = dt.time(0,0,0)

grid =[(dt.datetime.combine(dt.date(1,1,1),start)+n*interval).time() for n in range(48)]


for j in range(len(df)):
for i in range(0,47):
if df.ix[j,1] <grid[i+1] and df.ix[j,1] > grid[i]:
df.ix[j,3] = i

elif df.ix[j,1] > grid[47]:
df.ix[j,3] = 47


由于嵌套的for循环,此代码需要大量时间才能运行。有没有更有效的方式来做同样的事情?

最佳答案

您可以计算所需的bin,而不是查找。它可以节省很多:

def halfhour_bin(time):
return ((time.hour*60)+time.minute)//30

for j in range(len(df)):
df.ix[j,3] = halfhour_bin(df.ix[j,1])

关于python - 如何避免在Python中嵌套“for循环”?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43583744/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com