2013-06-06 143 views
0

我有一个DF,看起来像这样聚集:熊猫:多层次群体

 batch group reading temp test block delay 
    0 9551 Control  340 22.9  1 X  35 
    1 9551 Control  345 22.9  1 Y 35 

我需要GROUP BY“组”和“块”,例如我的方法看起来像这样:

df.groupby(['block', 'group']).reading.mean().unstack().transpose() 

block  X   Y 
group       
Control 347.339450 350.427273 
Trial 347.790909 350.668182 

什么会打电话像scipy.stats.ttest_ind 2参数功能上的数据切片这种方式使我最终的t检验的表

的最佳方式

控制VS试验以x

控制VS试验在y中

X VS在控制ý

X VS在试验

ÿ

回答

0

您想在应用t检验前对数据进行分组和汇总?我想你想选择数据的子集。分组可以做到这一点,但掩蔽可能会更简单地完成工作。

随口说说,我说你想要的东西,像

scipy.stats.ttest_ind(df[(df.group == 'Control') & (df.block == 'X')].reading, 
         df[(df.group == 'Trial') & (df.block == 'X')].reading) 
+0

屏蔽是一个明显的答案,但我希望能有一些更优雅,可与GROUPBY结构工作,所以,如果分组被改变,你不需要去更新你的选择 – Bicubic

+0

有趣的。我刚刚尝试过的想法都没有出现,但如果我想到任何事情,我会再次提醒。 –