2016-03-05 24 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