力扣:178. 分數排名(Python3)

題目:

表:?Scores

+-------------+---------+
| Column Name | Type    |
+-------------+---------+
| id          | int     |
| score       | decimal |
+-------------+---------+
在 SQL 中,id 是該表的主鍵。
該表的每一行都包含了一場比賽的分數。Score 是一個有兩位小數點的浮點值。

查詢并對分數進行排序。排名按以下規則計算:

  • 分數應按從高到低排列。
  • 如果兩個分數相等,那么兩個分數的排名應該相同。
  • 在排名相同的分數后,排名數應該是下一個連續的整數。換句話說,排名之間不應該有空缺的數字。

按?score?降序返回結果表。

查詢結果格式如下所示。

來源:力扣(LeetCode)
鏈接:力扣(LeetCode)官網 - 全球極客摯愛的技術成長平臺

示例:

示例 1:

輸入:

Scores 表:
+----+-------+
| id | score |
+----+-------+
| 1  | 3.50  |
| 2  | 3.65  |
| 3  | 4.00  |
| 4  | 3.85  |
| 5  | 4.00  |
| 6  | 3.65  |
+----+-------+


輸出:

+-------+------+
| score | rank |
+-------+------+
| 4.00  | 1    |
| 4.00  | 1    |
| 3.85  | 2    |
| 3.65  | 3    |
| 3.65  | 3    |
| 3.50  | 4    |
+-------+------+

解法:

先對score列降序排序,接著刪除id列,然后使用rank函數排名。

知識點:

1.DataFrame.rank(axis=0, method='average', numeric_only=None, na_option='keep', ascending=True, pct=False):計算出axis方向上各個data的排名。axis:默認按沿著index方向排名;method有以下選擇:

‘average’:默認,在每個組中分配平均排名(組,相同的值就是一個組,下同);

‘min’:對整個組使用最小排名;

‘max’:對整個組使用最大排名;

‘first’:按照值在數據中出現的次序分配排名;

‘dense’:類似于‘min’,但是組間排名總是增加1,而不是一個組中的相等元素的數量;

numeric_only:是否只對數值列處理;na_option:用于處理NaN值,'keep':保持NA;'top':升序時給NaN分配最小值;'bottom':升序時給NaN分配最大值;ascending:是否為升序,默認為True;pct:是否為百分數。舉例,初始表如下,存在r:

r['rank'] = r.rank(method='dense', ascending=False)

代碼:

import pandas as pddef order_scores(scores: pd.DataFrame) -> pd.DataFrame:r = scores.sort_values(['score'], ascending=False, ignore_index=True)del r['id']r['rank'] = r.rank(method='dense', ascending=False)return r

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/164210.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/164210.shtml
英文地址,請注明出處:http://en.pswp.cn/news/164210.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

TCP /UDP協議的 socket 調用的過程

在傳輸層有兩個主流的協議 TCP 和 UDP,socket 程序設計也是主要操作這兩個協議。這兩個協議的區別是什么呢?通常的答案是下面這樣的。 TCP 是面向連接的,UDP 是面向無連接的。TCP 提供可靠交付,無差錯、不丟失、不重復、并且按序…

Selenium介紹及基本使用方法

Selenium是一個開源、免費、簡單、靈活,對Web瀏覽器支持良好的自動化測試工具,在UI自動化、爬蟲等場景下是十分實用的,能夠熟練掌握并使用Selenium工具可以大大的提高效率。 Selenium簡介 Selenium支持多平臺、多瀏覽器、多語言去實現自動化…

深入理解強化學習——馬爾可夫決策過程:動作價值函數

分類目錄:《深入理解強化學習》總目錄 不同于馬爾可夫獎勵過程,在馬爾可夫決策過程中,由于動作的存在,我們額外定義一個動作價值函數(Action-value Function)。我們用 Q π ( s , a ) Q^\pi(s, a) Qπ(s,a)…

線程提交線程到線程池,有幾種方式,哪一種方式是工作中不能使用的,無法捕捉異常,線程池的拒絕策略,線程池的提交方式

線程池的工作原理 JDK中提交線程到線程池,有幾種方式,哪一種方式是工作中不能使用的,無法捕捉異常 兩種提交任務的方法 ExecutorService 提供了兩種提交任務的方法: execute():提交不需要返回值的任務 submit()&a…

【C語言】多組輸入

C系列文章目錄 目錄 C系列文章目錄 一、什么是多組輸入? 二、如何使用多組輸入 2.1,試題舉例講解 2.2,錯誤解法 2.3,我們實現多組輸入的思路 2.4,第一種正確的解法 2.5,第二種正確的解法 2.6&…

Python入門教程 | Python3 字典(dict)

Python3 字典 字典是另一種可變容器模型,且可存儲任意類型對象。 Python3中的字典是一種無序、可變、可迭代的數據結構,它由鍵(key)和對應的值(value)組成。字典在Python中被視為可變對象,這意…

ES ElasticSearch安裝、可視化工具kibana安裝

1、安裝ES docker run -d --name es9200 -e "discovery.typesingle-node" -p 9200:9200 elasticsearch:7.12.1訪問測試: http://域名:9200/ 2、安裝kibana對es進行可視化操作 執行命令 docker run -d --name kibana5601 -p 5601:5601 kibana:7.1.12.修…

如何實現在公網下使用navicat圖形化工具遠程連接本地內網的MariaDB數據庫

公網遠程連接MariaDB數據庫【cpolar內網穿透】 文章目錄 公網遠程連接MariaDB數據庫【cpolar內網穿透】1. 配置MariaDB數據庫1.1 安裝MariaDB數據庫1.2 測試局域網內遠程連接 2. 內網穿透2.1 創建隧道映射2.2 測試隨機地址公網遠程訪問3. 配置固定TCP端口地址3.1 保留一個固定的…

Redis深入理解-Socket連接建立流程以及文件事件處理機制

Redis Server 運行原理圖 Redis 服務器中 Socket 網絡建立以及文件事件模型 一個 redis 單機,可以抗幾百上千的并發,這里的并發指的就是同時可以有幾百個 client 對這個 redis server 發起請求,都需要去建立網絡連接,同時間可能會…

利用 docker 實現JMeter分布式壓測

為什么需要分布式? 在工作中經常需要對一些關鍵接口做高QPS的壓測,JMeter是由Java 語言開發,沒創建一個線程(虛擬用戶),JVM默認會為每個線程分配1M的堆棧內存空間。受限于單臺試壓機的配置很難實現太高的并…

YAML 深入解析:從語法到最佳實踐

什么是YAML YAML(YAML Ain’t Markup Language)是一種人類可讀的數據序列化語言。它的設計目標是使數據在不同編程語言之間交換和共享變得簡單。YAML采用了一種簡潔、直觀的語法,以易于閱讀和編寫的方式表示數據結構。 YAML廣泛應用于配置文…

【OpenCV實現圖像:制作酷炫的動畫效果】

文章目錄 概要生成背景圖添加點動畫添加文本顯示小結 概要 首先,通過導入必要的庫,包括NumPy用于數學運算和Matplotlib庫用于數據可視化。隨后,創建圖形和軸,初始化點的位置,以及編寫初始化函數和更新函數。 初始化函…

C語言歸并排序

以夢為馬,不負韶華 文章目錄 引入:實現原理問題引出:遞歸實現:迭代實現穩定性分析:總結: 引入: 如何將兩個有序數組(假設為升序)合并為一個有序數組? 雙指針…

yolov5/v7修改標簽和檢測框顯示【最全】

《記錄自己在使用yolov5遇到的一些問題》同時也供大家參考,如果對你們有幫助,希望大家可以給個點贊、收藏鼓勵下,非常感謝! 以自帶的一張圖片作為示例,yolov5(6.1版本)的初始檢測框應該是如下圖所示 修改線條粗細、隱藏標簽、隱…

EI論文故障識別程序:DBN深度置信/信念網絡的故障識別Matlab程序,數據由Excel導入,直接運行!

?適用平臺:Matlab2021b版及以上 本程序參考中文EI期刊《基于變分模態分解和改進灰狼算法優化深度置信網絡的自動轉換開關故障識別》中的深度置信網絡(Deep Belief Network,DBN)部分進行故障識別,程序注釋清晰&#x…

Python之學生信息管理系統

目錄 一、基礎界面實現 1、主函數 2、保持循環,獲取用戶需求 二、函數實現模塊功能 1、添加學生信息 2、刪除學生信息 3、修改學生信息 4、查找全部學生信息 5、退出系統 三、整合代碼 1、 完整代碼 2、完整實現過程 實現 打印功能菜單、添加學生信息、刪…

想自學軟件測試?一般人我還是勸你算了吧。。。

📢專注于分享軟件測試干貨內容,歡迎點贊 👍 收藏 ?留言 📝 如有錯誤敬請指正!📢交流討論:歡迎加入我們一起學習!📢資源分享:耗時200小時精選的「軟件測試」資…

<keep-alive>作用及用法

<keep-alive>是Vue.js的內置組件。它用于緩存具有相同組件樹的組件。當組件使用<keep-alive>包裹時&#xff0c;組件不會被銷毀&#xff0c;而是會緩存到內存中&#xff0c;等到下次再次渲染時&#xff0c;直接使用緩存中的組件實例。 <keep-alive>有以下幾…

【Linux】共享內存

文章目錄 一、共享內存的原理詳談共享內存的實現過程二、共享內存的接口函數1.shmget2. shmatshmdtshmctl 進程間使用共享內存通信三、共享內存的特性 關于代碼 一、共享內存的原理 共享內存是由操作系統維護和管理的一塊內存。 共享內存的本質是內核級的緩沖區。 一個進程向…

C語言精華題目錦集1

第一題 test.c文件中包括如下語句&#xff0c;文件中定義的四個變量中&#xff0c;是指針類型的是&#xff08;&#xff09;【多選】 #define INT_PTR int* typedef int* intptr; INT_PRT a,b; int_ptr c,d;A:a ?B:b ?C:c ?D:d #define是宏定義&#xff0c;此時在程序中IN…