Python 如何比较循环中特定位置的两个值,并在Dataframe中的一系列值中追加数据

Python 如何比较循环中特定位置的两个值,并在Dataframe中的一系列值中追加数据,python,pandas,loops,dataframe,Python,Pandas,Loops,Dataframe,我有一个数据框,从中我提取了一些样本数据: Time Val 0 70000 -322 1 70500 -439 2 71000 -528 3 71500 -606 4 72000 -642 5 72500 -663 6 73000 -620 7 73500 -561 8 74000 -592 9 74500 -614 10 75000 -630 11 75500 -719 12 8000

我有一个数据框,从中我提取了一些样本数据:

    Time    Val
0   70000   -322
1   70500   -439
2   71000   -528
3   71500   -606
4   72000   -642
5   72500   -663
6   73000   -620
7   73500   -561
8   74000   -592
9   74500   -614
10  75000   -630
11  75500   -719
12  80000   -613
13  80500   -127
14  81000   -235
15  81500   -186
16  82000   -82
17  82500   836
18  83000   1137
183 70000   -106
184 70500   -117
185 71000   -626
186 71500   -810
187 72000   -822
188 72500   -676
189 73000   -639
190 73500   -664
191 74000   -708
192 74500   -515
193 75000   -61
194 75500   -121
195 80000   -145
196 80500   -57
197 81000   -133
198 81500   101
199 82000   235
200 82500   585
201 83000   550
366 70000   18
367 70500   138
368 71000   22
369 71500   -68
370 72000   -146
371 72500   -163
372 73000   -251
373 73500   -230
374 74000   -218
375 74500   -137
376 75000   -126
现在,我想将73000时“Val”的值与[I-3]的值进行比较。
如果值较小,则将连续值追加到列表中,直到时间达到80000。
我写了这个循环,但问题是‘Val’比较了73000和80000之间的所有值[I-3]。我希望比较只发生在73000,如果条件为真,则将数据写入列表(直到时间80000)

box=[]
对于df.index中的i:

如果df.Time[i]>=73000且df.Time[i]您需要记住另一个变量中的比较结果,并在遇到超出所需时间间隔的时间值时将其重置。代码如下所示

box = []

writeToList = False

for i in df.index:
    if df.Time[i] < 73000 or df.Time[i] > 80000:
        writeToList = False
    
    if df.Time[i] == 73000 and df.Val[i] < df.Val[i-3]:
        writeToList = True
    
    if writeToList and df.Time[i] >= 73000 and df.Time[i] <= 80000 :
        box.append(
        {
            'Time': df.Time[i],
            'newVAL': df.Val[i],
        }
    )

box = pd.DataFrame (box, columns = ['Time','newVAL']) 
box=[]
writeToList=False
对于df.index中的i:
如果测向时间[i]<73000或测向时间[i]>80000:
writeToList=False
如果df.Time[i]==73000且df.Val[i]如果writeToList和df.Time[i]>=73000和df.Time[i]有几个问题:1。如果有多个日期为73000的条目,会发生什么情况?2.数据帧是否按“日期”列排序?是,值73000重复。循环应在每次73000+条件为真时提供列表,并将“Val”中的值写入列表,直到time=80000。如果time=73000,但Val[i]>Val[i-3],则不要附加到列表中,等待下一个循环给出答案。看看它是否有用。它似乎给了我正确的结果,谢谢!
box = []

writeToList = False

for i in df.index:
    if df.Time[i] < 73000 or df.Time[i] > 80000:
        writeToList = False
    
    if df.Time[i] == 73000 and df.Val[i] < df.Val[i-3]:
        writeToList = True
    
    if writeToList and df.Time[i] >= 73000 and df.Time[i] <= 80000 :
        box.append(
        {
            'Time': df.Time[i],
            'newVAL': df.Val[i],
        }
    )

box = pd.DataFrame (box, columns = ['Time','newVAL'])