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 循环之前已经完成(因此它被包含了两次)。
我已经编写了这段代码,但我的输出并不完全符合预期。似乎 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 循环之前已经完成(因此它被包含了两次)。