2016-11-25 100 views
0

我有一個數據幀ZDF看起來像應用stats.ttest_1samp如下:熊貓:在每一行

Index  A B C Mean 
2008-11-21 23 12 16 18 
2008-11-24 26 14 15 17 
2008-11-25 28 20 21 25 
2008-11-26 25 26 27 26 

我想在每行應用雙側t檢驗,並保存結果在一個新的專欄。使用stats.ttest_1samp

from scipy.stats import stats 

它需要一個第一參數列表(除了上最後的每一行的所有值),和第二個參數的平均值(ZDF中的最後一列)。它會返回兩個值:t統計量和p值。我嘗試以下:

for i in range(zdf.shape[0]+1): 
    zdf.ix[i,'ttest'] = stats.ttest_1samp(list(zdf.iloc[i,:-1]),zdf.iloc[i,-1]) 

我不斷收到一個錯誤值,出於某種原因,但肯定有不適用本作循環更好的辦法?

預先感謝您。

+1

你能告訴我們錯誤 –

回答

1

你不能設置一個數組元素與.ix[]序列,所以你需要通過一個單一的陣列,具有:

for i in range(zdf.shape[0]+1): 
    zdf.ix[i,'ttest_res1'] = stats.ttest_1samp(zdf.iloc[i,:-1].values,zdf.iloc[i,-1])[1] 
    zdf.ix[i,'ttest_res2'] = stats.ttest_1samp(zdf.iloc[i,:-1].values,zdf.iloc[i,-1])[2] 

還,我將在第一個參數傳遞一個數組,而非列表與.values