2017-08-11 85 views
2

大家好,所以我在我的數據框下面的列:集團GROUPBY

 LC_REF 
1 DT 16 2C 
2 DT 16 2C 
3 DT 16 2C 

1 DT 16 3C 
6 DT 16 3C 
3 DT 16 3C 
7 DT 16 3C 

0 DT 17 1C 
0 DT 17 1C 
0 DT 17 1C 
1 DT 17 1C 

0 DT 17 2C 
2 DT 17 2C 
4 DT 17 2C 
5 DT 17 2C 

4 DT 17 3C 
1 DT 17 3C 
8 DT 17 3C 

我想知道,如果它可以組織各組LC_REF的,使得該指數是按升序排列的:

 LC_REF 
1 DT 16 2C 
2 DT 16 2C 
3 DT 16 2C 

1 DT 16 3C 
3 DT 16 3C 
6 DT 16 3C 
7 DT 16 3C 

0 DT 17 1C 
0 DT 17 1C 
0 DT 17 1C 
1 DT 17 1C 

0 DT 17 2C 
2 DT 17 2C 
4 DT 17 2C 
5 DT 17 2C 

1 DT 17 3C 
4 DT 17 3C 
8 DT 17 3C 

到目前爲止,我曾嘗試:

df.groupby('LC_REF').apply(pd.DataFrame.sort_index,'LC_REF',1) 
grouped = df.groupby('LC_REF').sum().reset_index() 

但這並不能給出正確的輸出。

+0

'reset_index'和'sort_values' – Wen

+0

好像我是想用GROUPBY – codeninja

回答

3

我覺得更好的是使用reset_index列從index,然後sort_values和最後set_index

df = df.reset_index().sort_values(['LC_REF','index']).set_index('index').rename_axis(None) 
print (df) 
    LC_REF 
1 DT 16 2C 
2 DT 16 2C 
3 DT 16 2C 
1 DT 16 3C 
3 DT 16 3C 
6 DT 16 3C 
7 DT 16 3C 
0 DT 17 1C 
0 DT 17 1C 
0 DT 17 1C 
1 DT 17 1C 
0 DT 17 2C 
2 DT 17 2C 
4 DT 17 2C 
5 DT 17 2C 
1 DT 17 3C 
4 DT 17 3C 
8 DT 17 3C 
+1

哇...我只是張貼評論超過它複雜~~~ :-)良好的解決方案+1 – Wen

+0

@jezrael看起來像我是太多w groupby,我只是需要sort_values ...似乎明顯的事後回顧 – codeninja

+0

@codeninja - 我認爲'groupby'這裏是第一個想法,所以沒問題。 :) – jezrael

1
df = pd.read_table(StringIO(""" 
id LC_REF 
1 DT 16 2C 
2 DT 16 2C 
3 DT 16 2C 
1 DT 16 3C 
6 DT 16 3C 
3 DT 16 3C 
7 DT 16 3C 
0 DT 17 1C 
0 DT 17 1C 
0 DT 17 1C 
1 DT 17 1C 
0 DT 17 2C 
2 DT 17 2C 
4 DT 17 2C 
5 DT 17 2C 
4 DT 17 3C 
1 DT 17 3C 
8 DT 17 3C"""), sep = ' ') 

df.sort_values(['LC_REF', 'id'],ascending=True) 
+0

列ID來自哪裏? – Wen

+0

@Wen,我將列名稱命名爲索引,它已被顯示爲索引 –

0

或作爲我的意見,那就是去第一好辦法。但是,如果你你想使用groupby試試這個

df.groupby('LC_REF',as_index=False).apply(pd.DataFrame.sort_index)