最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

pandas中按行或列的值對數(shù)據(jù)排序的實(shí)現(xiàn)

 更新時(shí)間:2023年02月27日 09:25:36   作者:寧萌Julie  
本文主要介紹了pandas中按行或列的值對數(shù)據(jù)排序的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

在處理表格型數(shù)據(jù)時(shí),常會用到排序,比如,按某一行或列的值對表格排序,要怎么做呢?

這就要用到 pandas 中的 sort_values() 函數(shù)。

一、 按列的值對數(shù)據(jù)排序

先來看最常見的情況。

1.按某一列的值對數(shù)據(jù)排序

以下面的數(shù)據(jù)為例。

import pandas as pd
df_col = pd.DataFrame({'Name':['Paul','Richard', 'Betty',  'Philip','Anna'],
        'course1':[85,83,90,84,85],
        'course2':[90,82,79,71,86],
        'sport':['basketball', 'Volleyball', 'football', 'Basketball','baseball']},
         index=[1,2,3,4,5])  
df_col
Namecourse1course2sport
1Paul8590basketball
2Richard8382Volleyball
3Betty9079football
4Philip8471Basketball
5Anna8586baseball

在 sort_values() 函數(shù)中設(shè)置 by='列名',即可以按這一列值的順序重新排列行。

df_sort=df_col.sort_values(by='course2')
df_sort
Namecourse1course2sport
4Philip8471Basketball
3Betty9079football
2Richard8382Volleyball
5Anna8586baseball
1Paul8590basketball

如以上結(jié)果所示,默認(rèn)是升序排列。還可以做降序排列,在 sort_values() 函數(shù)中設(shè)置 ascending=False 即可。例如:

df_sort=df_col.sort_values(by='course2',ascending=False)
df_sort
Namecourse1course2sport
1Paul8590basketball
5Anna8586baseball
2Richard8382Volleyball
3Betty9079football
4Philip8471Basketball

2. 按多列的值對數(shù)據(jù)排序

您是否遇到過這種情況:要排序的某一列數(shù)據(jù)有相同的值,此時(shí)結(jié)果會怎么樣呢?我們來看下面的例子。

df_sort=df_col.sort_values(by='course1')
df_sort
Namecourse1course2sport
2Richard8382Volleyball
4Philip8471Basketball
1Paul8590basketball
5Anna8586baseball
3Betty9079football

從結(jié)果看到,“course1” 有兩個(gè)相同的值 85,此時(shí)會依據(jù) index 的先后順序排列。

那如果不想按 index 順序,想要自己設(shè)定相同值的排序方式,應(yīng)該怎么做呢?

可以設(shè)置第二列,對于第一列的相同值,參照第二列的值排序。例如:

df_sort=df_col.sort_values(by=['course1','course2'])
df_sort
Namecourse1course2sport
2Richard8382Volleyball
4Philip8471Basketball
5Anna8586baseball
1Paul8590basketball
3Betty9079football

可以看到,by 參數(shù)中的第二列 “course2” 只在第一列 “course1” 中有相同值時(shí)起作用,因此只有 “Anna” 和 “Paul” 所在的這兩行數(shù)據(jù)位置互換,其它行位置不變。

3. key 參數(shù):設(shè)置排序時(shí)的數(shù)據(jù)變換函數(shù)

在實(shí)際中還可能會遇到這種情況,數(shù)據(jù)中大小寫都有,比如例子數(shù)據(jù)的 “sport” 列。按這一列對數(shù)據(jù)排序,結(jié)果如下:

df_sort=df_col.sort_values(by=['sport'])
df_sort
Namecourse1course2sport
4Philip8471Basketball
2Richard8382Volleyball
5Anna8586baseball
1Paul8590basketball
3Betty9079football

看結(jié)果發(fā)現(xiàn),大寫字母排在小寫字母前面,因此 “Volleyball” 所在行排在 “baseball” 所在行前面,但這并不是我們想要的排序結(jié)果。那應(yīng)該怎么做,才能按字母順序排序呢?

可以設(shè)置 sort_values() 函數(shù)的 key 參數(shù)。

df_sort=df_col.sort_values(by=['sport'],key=lambda col:col.str.lower())
df_sort
Namecourse1course2sport
5Anna8586baseball
1Paul8590basketball
4Philip8471Basketball
3Betty9079football
2Richard8382Volleyball

此時(shí)的排序結(jié)果就是按字母順序排列。

4. 修改原數(shù)據(jù)

前面介紹的操作中,每次都生成了一個(gè)新的數(shù)據(jù) df_sort,并沒有改變原數(shù)據(jù)。

df_col
Namecourse1course2sport
1Paul8590basketball
2Richard8382Volleyball
3Betty9079football
4Philip8471Basketball
5Anna8586baseball

但是,有時(shí)可能數(shù)據(jù)太大,而原數(shù)據(jù)后續(xù)不再使用。為了節(jié)省空間,想直接在原數(shù)據(jù)上改動。應(yīng)該怎么辦呢?

只要在 sort_values() 函數(shù)中設(shè)置 inplace=True。

df_col.sort_values(by='course2',inplace=True)
df_col
Namecourse1course2sport
4Philip8471Basketball
3Betty9079football
2Richard8382Volleyball
5Anna8586baseball
1Paul8590basketball

二、 按行的值對數(shù)據(jù)排序

需要注意的是,這種情況只適用于各列數(shù)據(jù)類型相同的情況,例如下面例子中的數(shù)據(jù),每一列數(shù)據(jù)都是數(shù)值型。而前面例子的數(shù)據(jù)既有數(shù)值型,又有字符型,無法按行的值排序。

df_row = pd.DataFrame({
        'course1':[91,85,90,84,92],
        'course2':[72,81,76,71,79],
        'course3':[93,85,88,94,86]},
         index=['Paul','Richard', 'Betty',  'Philip','Anna'])
df_row
course1course2course3
Paul917293
Richard858185
Betty907688
Philip847194
Anna927986

按行的值排序時(shí),設(shè)置 by 參數(shù)為某行的 index 名,并且 axis=1。

df_sort=df_row.sort_values(by='Anna',axis=1)
df_sort
course2course3course1
Paul729391
Richard818585
Betty768890
Philip719484
Anna798692

按行值排序在 sort_values() 函數(shù)中設(shè)置 ascending, key, inplace 等參數(shù)的方式都與前面介紹的按列值排序相同。這里僅以按多行的值對數(shù)據(jù)排序?yàn)槔?/p>

df_sort=df_row.sort_values(by=['Richard','Paul'],axis=1,ascending=False)
df_sort
course3course1course2
Paul939172
Richard858581
Betty889076
Philip948471
Anna869279

參考

1.https://www.geeksforgeeks.org/sort-rows-or-columns-in-pandas-dataframe-based-on-values/#courses

2.https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.sort_values.html

到此這篇關(guān)于pandas中按行或列的值對數(shù)據(jù)排序的實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)pandas 按行或列的值對數(shù)據(jù)排序內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 深入理解python Matplotlib庫的高級特性

    深入理解python Matplotlib庫的高級特性

    Matplotlib是一款極其強(qiáng)大的Python數(shù)據(jù)可視化庫,這篇文章中,我們將深入討論 Matplotlib 的一些高級特性,包括對象導(dǎo)向接口、自定義顏色映射和樣式、動態(tài)圖形等,感興趣的小伙伴跟著小編一起來探討吧
    2023-07-07
  • python 判斷l(xiāng)inux進(jìn)程,并殺死進(jìn)程的實(shí)現(xiàn)方法

    python 判斷l(xiāng)inux進(jìn)程,并殺死進(jìn)程的實(shí)現(xiàn)方法

    今天小編就為大家分享一篇python 判斷l(xiāng)inux進(jìn)程,并殺死進(jìn)程的實(shí)現(xiàn)方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-07-07
  • Python OpenCV圖像顏色變換示例

    Python OpenCV圖像顏色變換示例

    大家好,本篇文章主要講的是Python OpenCV圖像顏色變換示例,感興趣的同學(xué)趕快來看一看吧,對你有幫助的話記得收藏一下
    2022-01-01
  • 關(guān)于Python Socket編程的要點(diǎn)詳解

    關(guān)于Python Socket編程的要點(diǎn)詳解

    Socket是網(wǎng)絡(luò)編程的一個(gè)抽象概念,通常我們用一個(gè)Socket表示“打開了一個(gè)網(wǎng)絡(luò)鏈接”,而打開一個(gè)Socket需要知道目標(biāo)計(jì)算機(jī)的IP地址和端口號,再指定協(xié)議類型即可,這篇文章主要給大家介紹了關(guān)于Python Socket編程的相關(guān)資料,需要的朋友可以參考下
    2021-08-08
  • 關(guān)于tf.TFRecordReader()函數(shù)的用法解析

    關(guān)于tf.TFRecordReader()函數(shù)的用法解析

    今天小編就為大家分享一篇關(guān)于tf.TFRecordReader()函數(shù)的用法解析,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-02-02
  • Python之str操作方法(詳解)

    Python之str操作方法(詳解)

    下面小編就為大家?guī)硪黄狿ython之str操作方法(詳解)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-06-06
  • Django后端接收嵌套Json數(shù)據(jù)及解析詳解

    Django后端接收嵌套Json數(shù)據(jù)及解析詳解

    這篇文章主要介紹了Django后端接收嵌套Json數(shù)據(jù)及解析詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-07-07
  • Python綜合應(yīng)用名片管理系統(tǒng)案例詳解

    Python綜合應(yīng)用名片管理系統(tǒng)案例詳解

    這篇文章主要介紹了Python綜合應(yīng)用名片管理系統(tǒng),結(jié)合具體案例形式詳細(xì)分析了Python名片管理系統(tǒng)相關(guān)步驟、原理、實(shí)現(xiàn)方法與操作注意事項(xiàng),需要的朋友可以參考下
    2020-01-01
  • Python五種下劃線詳解

    Python五種下劃線詳解

    這篇文章主要介紹了Python下劃線5種含義實(shí)例解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2021-10-10
  • Python實(shí)現(xiàn)鏈表反轉(zhuǎn)的方法分析【迭代法與遞歸法】

    Python實(shí)現(xiàn)鏈表反轉(zhuǎn)的方法分析【迭代法與遞歸法】

    這篇文章主要介紹了Python實(shí)現(xiàn)鏈表反轉(zhuǎn)的方法,結(jié)合實(shí)例形式分析了Python迭代法與遞歸法實(shí)現(xiàn)鏈表反轉(zhuǎn)的相關(guān)操作技巧與注意事項(xiàng),需要的朋友可以參考下
    2020-02-02

最新評論

云阳县| 元谋县| 安福县| 东光县| 阜新市| 孝昌县| 无棣县| 句容市| 四平市| 板桥市| 玉溪市| 武冈市| 伊川县| 鄂托克前旗| 临潭县| 区。| 玉门市| 灵石县| 祁连县| 永寿县| 炎陵县| 玉田县| 兴业县| 新巴尔虎右旗| 金坛市| 永仁县| 五寨县| 团风县| 曲松县| 富裕县| 曲水县| 鹤岗市| 成都市| 海晏县| 营口市| 南乐县| 云南省| 明光市| 陆丰市| 凤翔县| 海盐县|