Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/301.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 按Groupby中使用的第二列对值进行排序_Python_Pandas - Fatal编程技术网

Python 按Groupby中使用的第二列对值进行排序

Python 按Groupby中使用的第二列对值进行排序,python,pandas,Python,Pandas,我有以下数据帧: data = { 'CH': [0,1,0,1,0,0,0,0,1,0,0,0,1,1,1,0,0,0,1], 'Z': [10, 11, 10, 12, 13, 10, 11, 12, 13, 14, 11, 13, 10, 11, 12, 13, 14, 14, 14], 'Res': [23, 43, 21, 23, 43, 9, 21, 13, 23, 43, 31, 27, 31, 33, 54, 17, 19, 23, 33] }

我有以下数据帧:

data = {
    'CH': [0,1,0,1,0,0,0,0,1,0,0,0,1,1,1,0,0,0,1],
    'Z': [10, 11, 10, 12, 13, 10, 11, 12, 13, 14, 11, 13, 10, 11, 12, 13, 14, 14, 14],
    'Res': [23, 43, 21, 23, 43, 9, 21, 13, 23, 43, 31, 27, 31, 33, 54, 17, 19, 23, 33]
    }

df = pd.DataFrame(data)
如果我使用df.groupby(['CH','Z']).mean(),我会得到以下结果:

我希望能够按
Z
列按降序对值进行排序

我还想根据
Res
列中的值对值进行排序,但第一个是最重要的


谢谢。

首先按“Z”排序,然后按“Res”排序

dfs = df.groupby(['CH', 'Z']) \
          .mean() \
          .reset_index() \
          .sort_values(['Z', 'Res'], ascending=False)
如果需要保留与groupby结果类似的多索引:

dfs.set_index(['CH', 'Z'])

您可以使用
pandas.DataFrame.sort\u值
,因为
pandas.DataFrame.sort

如果要按
Res
排序,只需更改传递给
by
参数的值

df.groupby(['CH', 'Z']).mean().sort_values(by='Res')
您还可以在groupby语句中调用,该语句将保留索引并对其排序,而无需使用
set\u index()

我希望能够按
Z
列对值进行排序。。。然后 通过
Res

为了澄清一些术语:
Z
是一个索引级别,而
Res
是一个系列。熊猫,via,有助于隐藏这种区别。只需指定
升序
参数,以与您希望排序的组件对齐:

res = df.groupby(['CH', 'Z']).mean()\
        .sort_values(['Z', 'Res'], ascending=[False, True])

print(res)

             Res
CH Z            
0  14  28.333333
1  14  33.000000
   13  23.000000
0  13  29.000000
   12  13.000000
1  12  38.500000
0  11  26.000000
1  11  38.000000
0  10  17.666667
1  10  31.000000

在您的示例中,
[![Pandas groupby][1]][1]
是什么?您想在groupby之后进行排序吗?图片没有显示,让我重新发布它,以便按降序对
Z
的值进行排序
df。排序值(按class='Z',升序=False)
df_res=df.groupby(['CH', 'Z']).mean().sort_values('Res',ascending=False).sort_index(level=1,ascending=False)
print(df_res)

       Res
CH Z       
1  14 33.00
0  14 28.33
1  13 23.00
0  13 29.00
1  12 38.50
0  12 13.00
1  11 38.00
0  11 26.00
1  10 31.00
0  10 17.67
res = df.groupby(['CH', 'Z']).mean()\
        .sort_values(['Z', 'Res'], ascending=[False, True])

print(res)

             Res
CH Z            
0  14  28.333333
1  14  33.000000
   13  23.000000
0  13  29.000000
   12  13.000000
1  12  38.500000
0  11  26.000000
1  11  38.000000
0  10  17.666667
1  10  31.000000