2015-09-17 75 views
0

我寫過這段代碼,輸出結果不像預期的那樣。看起來,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是具有幾千行的30列和10的(因此平均了大規模的數據幀和std)。

我的輸出應該是:

   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

這是由設計爲(http://stackoverflow.com/questions/21390035/python-pandas-groupby-object-apply-method-duplicates-first-group) – EdChum

+0

@Anand S沿DUP [問題]表示Kumar你真的只是編輯它,在最後取消'謝謝你'? – OParker

+0

看看 - http://meta.stackexchange.com/questions/2950/should-hi-thanks-taglines-and-salutations-be-removed-from-posts –

回答

2

相反的range(len(df_z),請嘗試使用:

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

range從0開始之前的for循環(所以對於這個原因,它被包含兩次)第i = 0的情況下已經完成。

+0

再次歡呼Joris! – OParker