【问题标题】:How do I rank values of Pandas row into separate dataframe?如何将 Pandas 行的值排列到单独的数据框中?
【发布时间】:2020-11-02 12:00:09
【问题描述】:

我的具有df.shape (500,15) 的数据框在 (-1,1) 之间具有不同的值。

df.head()

0            -0.2966                 -0.1140  ...   0.4699      0.1250
1            -0.3051                 -0.1157  ...   0.6686      0.3290
2            -0.2014                 -0.1427  ...   0.4758      0.4919
3            -0.2703                 -0.0928  ...   0.6004      0.2436
4            -0.3399                 -0.0964  ...   0.3777      0.4808

我想创建一个单独的数据框,它给出该特定行中列的排名。 例如,df_rank(单独的 df)第一行将是行中最大数字排在第 1 位,最低排在第 15 位的排位,而不会更改位置/排序。第二行也一样,以此类推。

df_rank

0    11    8....    3    7
1    12    8....    1    3
2    13    7....    2    4
3    11    6....    3    6
4    12    6....    2    7

对所有 500 行以此类推...

【问题讨论】:

  • 您可以编辑您的示例以使输入和输出匹配吗?如果它们是完整的示例(即使它们小于您的真实数据框),人们会更容易回答它们

标签: python pandas sorting ranking


【解决方案1】:

使用DataFrame.rank:

df = df.rank(axis=1, ascending=False, method='dense').astype(int)
print (df)
   0  1  2  3
0  4  3  1  2
1  4  3  1  2
2  4  3  2  1
3  4  3  1  2
4  4  3  2  1

【讨论】:

  • 完美。谢谢
猜你喜欢
  • 2015-01-15
  • 2018-11-09
  • 1970-01-01
  • 2017-01-10
  • 2021-04-10
  • 2021-04-14
  • 2021-04-29
  • 2020-08-24
相关资源
最近更新 更多