2016-06-29 176 views
-3

我有一個數據幀,我得到以下幾點:集團通過與分

index1 index2 results 
0  0  0 8.605016 
1  0  1 8.600410 
2  0  2 8.585075 
3  1  0 8.550355 
4  1  1 8.557221 
5  1  2 8.557640 
6  2  0 4.360486 
7  2  1 4.362304 
8  2  2 4.354539` 

我想按index1並獲得最小值。我期望的輸出是這樣的:

index1 index2 results 
0  0  2 8.585075 
1  1  0 8.550355 
2  2  2 4.354539 
+0

所需輸出和問題說明衝突,在兩個索引上分組會產生一個有9行的df,但是你顯示3行表明你想要gr oup只是在索引1 – EdChum

+0

我通過所需輸出更正問題 - 刪除索引2。 – jezrael

回答

1

我的解決方案有效,如果只groupbyindex1 - 那麼你得到所需的輸出。

您需要min值的值的第一indexes通過idxmin然後ix選擇:

print (df.groupby('index1')['results'].idxmin()) 

print (df.ix[df.groupby('index1')['results'].idxmin()]) 
    index1 index2 results 
2  0  2 8.585075 
3  1  0 8.550355 
8  2  2 4.354539 

另一種解決方案是sort_valuesgroupby與聚集first

print (df.sort_values(by="results").groupby('index1', as_index=False).first()) 
    index1 index2 results 
0  0  2 8.585075 
1  1  0 8.550355 
2  2  2 4.354539