Pandas 在范围内迭代。同一个数字两次?

Pandas iterating in range. Same number twice?

我已经编写了这段代码,但我的输出并不完全符合预期。似乎 for 循环在第一次迭代中运行了两次,然后错过了第二次并直接跳到第三次。我看不出哪里出了问题,但是有人可以指出错误吗?谢谢!

代码如下:

i = 0
df_int = df1[(df1.sLap > df_z.Entry[i]) & (df1.sLap < df_z.Exit[i]) & (df1.NLap == Lap1)]

df_Entry = df_int.groupby(df_int.BCornerEntry).aggregate([np.mean, np.std])


df_Entry.rename(index={1:  'T'+str(df_z['Turn Number'][i])}, inplace=True)

for i in range(len(df_z)):
    df_int = df1[(df1.sLap > df_z.Entry[i]) & (df1.sLap < df_z.Exit[i]) & (df1.NLap == Lap1)]

    df_Entry2 = df_int.groupby(df_int.BCornerEntry).aggregate([np.mean, np.std])

    df_Entry2.rename(index={1:  'T'+str(df_z['Turn Number'][i])}, inplace=True)

    df_Entry = pd.concat([df_Entry, df_Entry2])

df_z 是一个 excel 文档,其数据如下:

    Turn Number  Entry  Exit
0             1    321   441
1             2    893  1033
2             3   1071  1184
3             4   1234  1352
4             5   2354  2454
5             6   2464  2554
6             7   2574  2689
7             8   2955  3120..... and so on

然后 df1 是一个巨大的 DataFrame,具有 30 列和 10 的数千行(因此是均值和标准差)。

我的输出应该是:

                tLap            
                mean       std      
BCornerEntry                                                          
T1              6.845490  0.591227      
T2             14.515195  0.541967      
T3             19.598690  0.319181     
T4             21.555500  0.246757     
T5             34.980000  0.518170     
T6             37.245000  0.209284     
T7             40.220541  0.322800.... and so on     

然而我得到这个:

                tLap            
                mean       std      
BCornerEntry                                                          
T1              6.845490  0.591227      
T1              6.845490  0.591227      
T3             19.598690  0.319181     
T4             21.555500  0.246757     
T5             34.980000  0.518170     
T6             37.245000  0.209284     
T7             40.220541  0.322800..... and so on    

T2还是T1,号码一样?我做错了什么?任何帮助将不胜感激!

而不是 range(len(df_z),尝试使用:

for i in range(1, len(df_z)):
    ...

因为 range 从 0 开始并且 i=0 的情况在 for 循环之前已经完成(因此它被包含了两次)。