当前位置: 首页 > 面试题库 >

使用pandas自定义排序

东方权
2023-03-14
问题内容

我有以下数据框,我想先按“重要性”排序,然后再按“名称”排序:

Name        Criticality
baz         High
foo         Critical
baz         Low
foo         Medium
bar         High
bar         Low
bar         Medium
...

我一直在努力做到这一点使用中提供了答案这个职位,但我不能得到它的工作。

最终结果应该是这样的

Name        Criticality
bar         High
bar         Medium
bar         Low
baz         High
baz         Low
foo         Critical
foo         Medium

问题答案:

一种方法是使用自定义字典创建“等级”列,然后使用进行排序,然后在排序后删除该列:

In [17]:
custom_dict = {'Critical':0, 'High':1, 'Medium':2, 'Low':3}  
df['rank'] = df['Criticality'].map(custom_dict)
df

Out[17]:

  Name Criticality  rank
0  baz        High     1
1  foo    Critical     0
2  baz         Low     3
3  foo      Medium     2
4  bar        High     1
5  bar         Low     3
6  bar      Medium     2

[7 rows x 3 columns]

In [19]:
# now sort by 'Name' and 'rank', it will first sort by 'Name' column first and then 'rank'
df.sort(columns=['Name', 'rank'],inplace=True)
df

Out[19]:

  Name Criticality  rank
4  bar        High     1
6  bar      Medium     2
5  bar         Low     3
0  baz        High     1
2  baz         Low     3
1  foo    Critical     0
3  foo      Medium     2

[7 rows x 3 columns]

In [21]:
# now drop the 'rank' column
df.drop(labels=['rank'],axis=1)

Out[21]:

  Name Criticality
4  bar        High
6  bar      Medium
5  bar         Low
0  baz        High
2  baz         Low
1  foo    Critical
3  foo      Medium

[7 rows x 2 columns]


 类似资料:
  • 主要内容:操作整个数据表,操作行或列,操作单一元素如果想要应用自定义的函数,或者把其他库中的函数应用到 Pandas 对象中,有以下三种方法: 1) 操作整个 DataFrame 的函数:pipe() 2) 操作行或者列的函数:apply() 3) 操作单一元素的函数:applymap() 如何从上述函数中选择适合的函数,这取决于函数的操作对象。下面介绍了三种方法的使用。 操作整个数据表 通过给 pipe() 函数传递一个自定义函数和适当数量的参

  • 问题内容: 我有,其中一列包含月份名称。 如何使用字典进行自定义排序,例如: 问题答案: 首先,将月份列设为分类,然后指定要使用的顺序。 现在,当你对月份列进行排序时,它将相对于该列表进行排序: 注意:如果值不在列表中,它将被转换为NaN。 对于那些有兴趣的人来说,是一个较旧的答案 你可以创建一个中间系列,并set_index在此基础上: 如前所述,在新的熊猫中,Series可以replace更优

  • 问题内容: 我有这样的查询: 但是,当我打印出来时,它会自动进行1,2,3,4,5的排序。我们如何在不更改数据库结构的情况下保持顺序(2,4,1,5,3)? 谢谢! 问题答案: 我问这个: mysql按问题排序 我得到的答案和所有功劳归于他们: 您可以使用CASE运算符指定顺序: 在PHP中,你可以像这样:

  • 问题内容: 我有一个问题:这是由ElementTree库形成的列表列表。 word1..4可能包含Unicode字符,即(â,ü,ç)。 我想按我的自定义字母对列表列表进行排序。 我知道如何从这里按python中的单词对自定义字母进行排序 我也知道如何从此处http://wiki.python.org/moin/HowTo/Sorting按键排序 问题是我找不到如何应用这两种方法对“列表列表”进行

  • 有的时候我们希望排序不是仅仅按照自然顺序排序。例如,我们希望按照字符串的长度来对一个字符串数组排序而不是按照字母顺序来排序。这里我们介绍一下Go的自定义排序。 package main import "sort" import "fmt" // 为了能够使用自定义函数来排序,我们需要一个 // 对应的排序类型,比如这里我们为内置的字符串 // 数组定义了一个别名ByLength type ByLe

  • 问题内容: 我想使用该函数在滚动窗口的基础上应用自己的自定义函数。 但是我的函数需要两个参数,并且还具有两个输出。这可能吗? 下面是一个最小的可复制示例… 导致错误…因为gm需要两个参数… 任何帮助将不胜感激… 编辑 按照Jeff的评论,我已经取得了进步,但仍在为两个或多个列输出而苦苦挣扎,因此,如果我改为创建一个新函数(如下),该函数仅返回两个随机数(与上一个计算无关),而不是v的最后一行,出现