2016-03-05 34 views
0

我有数据集如下创建向量秩和检验H-测试蟒

df = pd.DataFrame({'numbers':range(9), 'group':['a', 'b', 'c']*3}) 

group numbers 
0 a 0 
1 b 1 
2 c 2 
3 a 3 
4 b 4 
5 c 5 
6 a 6 
7 b 7 
8 c 8 

我想创建矢量

a = [0, 3, 6] 
b = [1, 4, 7] 
c = [2, 5, 8] 

用于秩和检验H-测试蟒

stats.kruskal(a, b, c) 

或者可能类似于R(数字〜组)

回答

2

我不熟悉的秩和检验测试的任何特殊要求,但你可以将它们放入一个字典这种方式通过访问这些分组阵列:

groupednumbers = {} 
for grp in df['group'].unique(): 
    groupednumbers[grp] = df['numbers'][df['group']==grp].values 

print(groupednumbers) 
*** {'c': array([2, 5, 8]), 'b': array([1, 4, 7]), 'a': array([0, 3, 6])} 

也就是说,你会得到你的载体通过明确地调用groupednumbers['a']等,或通过列表:

args = groupednumbers.values() 

...或者,如果你需要他们的订单:

args = [groupednumbers[grp] for grp in sorted(df['group'].unique())] 

然后拨打

stats.kruskal(*args) 

或者如果你需要实际的列表,你可以做list(df['numbers'][...].values)。

+0

非常感谢@chryss – Edward