组合一组

时间:2017-08-11 15:25:28

标签: python python-3.x pandas

大家好,我的数据框中有以下列:

     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()

但是没有给出正确的输出。

2 个答案:

答案 0 :(得分: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)

  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& #xA; 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'],升序=真)
  
&#xA ;