在多列熊猫中排序

问题描述 投票:1回答:1
df = pd.DataFrame([["Alpha", 3, 2, 4], ["Bravo", 2, 3, 1], ["Charlie", 4, 1, 3], ["Delta", 1, 4, 2]], 
              columns = ["Company", "Running", "Combat", "Range"])
print(df)
  Company Running   Combat  Range
0   Alpha      3      2       4
1   Bravo      2      3       1
2   Charlie    4      1       3
3   Delta      1      4       2

[嗨,我正在尝试对以下数据框进行排序,以便对行进行排列,从而使三列中表现最佳的行位于顶部。在这种情况下将是Bravo公司,因为它在运行中为2,演习为3,范围为1。

如果列表中有更多公司,并且很难知道确切的“最佳公司”,这种方法是否行得通?

我尝试过:

df_sort = df.sort_values(['Running', 'Combat', 'Range'], ascending=[True, True, True])

当前输出:

    Company Running Combat  Range
1   Delta      1      4     2
0   Bravo      2      3     1
3   Alpha      3      2     4
2   Charlie    4      1     3

但事实并非如此。可以通过熊猫吗?我期望的输出是:

Company Running Combat  Range
0   Bravo   2     3     1
1   Delta   1     4     2
2   Charlie 4     1     3
3   Alpha   3     2     4
python pandas
1个回答
1
投票

如果要按每行mean进行排序,请先创建mean,然后将Series.argsort添加到排序值的位置,最后按Series.argsort更改值的顺序:

DataFrame.iloc

编辑:如果需要在DataFrame.iloc之前删除一些列:

df1 = df.iloc[df.mean(axis=1).argsort()]
print (df1)
   Company  Running  Combat  Range
1    Bravo        2       3      1
3    Delta        1       4      2
2  Charlie        4       1      3
0    Alpha        3       2      4
© www.soinside.com 2019 - 2024. All rights reserved.