我已经编写了这段代码,但我的输出并不像预期的那样。似乎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且数字相同?我做错了什么?任何帮助将不胜感激!
答案 0 :(得分:2)
而不是range(len(df_z)
,请尝试使用:
for i in range(1, len(df_z)):
...
因为range
从0开始,并且i = 0的情况已经在for循环之前完成(因此,它被包含两次)。