集团GROUPBY
问题描述:
大家好,所以我在我的数据框下面的列:集团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()
但这并不能给出正确的输出。
答
我觉得更好的是使用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
答
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,我将列名称命名为索引,它已被显示为索引 –
答
或作为我的意见,那就是去第一好办法。但是,如果你你想使用groupby
试试这个
df.groupby('LC_REF',as_index=False).apply(pd.DataFrame.sort_index)
'reset_index'和'sort_values' – Wen
好像我是想用GROUPBY – codeninja