2017-03-09 142 views
0

它看起來像我不明白大熊貓groupby如何工作,以及如何使用它。有人可以解釋我做錯了什麼或如何解決我的問題? 我想根據不同的列提取一些數據。看例子:實現熊貓groupby - 索引和切片

Number Name Param1 Param2 Param3 
0  1 A  0 0.179264 0.565864 
1  2 A  1 0.374258 0.985103 
2  1 C  2 0.799988 0.855600 
3  3 B  3 0.237612 0.290065 
4  3 C  4 0.195463 0.232030 
5  2 C  5 0.611886 0.712429 
6  4 A  6 0.178465 0.056347 
7  1 B  7 0.018789 0.393464 
8  5 B  8 0.549566 0.457160 
9  4 B  9 0.149801 0.590501 
10  4 C  10 0.112857 0.327013 
11  3 A  11 0.902660 0.670725 
12  2 B  12 0.474427 0.104224 
13  5 C  13 0.691259 0.620992 
14  5 A  14 0.043179 0.028890 

然後我想要做一個涉及兩個循環的操作。基本上,在這個例子中,我想打印每個數字引用的每個Name的參數(作爲一個數組,但這不是問題)[Param1,Param2,Param3]。

因此,一個期望的結果會是什麼樣子: 數1:[[0, 0.179264, 0.565864],[2, 0.799988, 0.855600],[7, 0.018789, 0.393464]] 數2:[[1, 0.374258, 0.985103],[5, 0.611886, 0.712429],[12, 0.474427, 0.104224]]等(後來我想繪製它們,並使用「名稱」爲標籤

這是代碼:

for n in example.groupby('Number'): 
    for name in example['Name']: 
     params = np.array(example.loc[n['Name']==name,['Param1','Param2','Param3']]) 
     print 'Group:', n 
     print 'Params:\n', params 

但好像我無法用數據幀的索引爲GROUPBY對象。此代碼生成TypeError: tuple indices must be integers, not str。 有可能,我現在提出,試圖弄明白多個錯誤,但它似乎是正確索引和切片g roupby對象是主要問題。

回答

1

我不知道,如果很好地理解,但儘量loop in groups

for i, n in df.groupby('Number'): 
    print (i) 
    print (n[['Param1','Param2','Param3']]) 
    #for output as nested lists 
    #print (n[['Param1','Param2','Param3']].values.tolist()) 

1 
    Param1 Param2 Param3 
0  0 0.179264 0.565864 
2  2 0.799988 0.855600 
7  7 0.018789 0.393464 
2 
    Param1 Param2 Param3 
1  1 0.374258 0.985103 
5  5 0.611886 0.712429 
12  12 0.474427 0.104224 
3 
    Param1 Param2 Param3 
3  3 0.237612 0.290065 
4  4 0.195463 0.232030 
11  11 0.902660 0.670725 
4 
    Param1 Param2 Param3 
6  6 0.178465 0.056347 
9  9 0.149801 0.590501 
10  10 0.112857 0.327013 
5 
    Param1 Param2 Param3 
8  8 0.549566 0.457160 
13  13 0.691259 0.620992 
14  14 0.043179 0.028890