2016-11-25 134 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