" />

欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

pd.DataFrame中的幾種索引變換的實(shí)現(xiàn)

 更新時(shí)間:2022年06月16日 11:11:49   作者:小數(shù)志  
本文主要介紹了pd.DataFrame中的幾種索引變換的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

導(dǎo)讀:pandas中最常用的數(shù)據(jù)結(jié)構(gòu)是DataFrame,而DataFrame相較于嵌套list或者二維numpy數(shù)組更好用的原因之一在于其提供了行索引和列名。本文主要介紹行索引的幾種變換方式,包括rename與reindex、index.map、set_index與reset_index、stack與unstack等。

慣例開局一張圖

01 索引簡(jiǎn)介與樣例數(shù)據(jù)

Series和DataFrame是pandas中的主要數(shù)據(jù)結(jié)構(gòu)類型(老版本中曾有三維數(shù)據(jù)結(jié)構(gòu)Panel,是DataFrame的容器,后被取消),而二者相較于傳統(tǒng)的數(shù)組或list而言,最大的便利之處在于其提供了索引,DataFrame中還有列標(biāo)簽名,這些都使得在操作一行或一列數(shù)據(jù)中非常方便,包括在數(shù)據(jù)訪問(wèn)、數(shù)據(jù)處理轉(zhuǎn)換等。關(guān)于索引的詳細(xì)介紹可參考前文:python數(shù)據(jù)科學(xué)系列:pandas入門詳細(xì)教程

這里,為了便于后文舉例解釋,給出基本的DataFrame樣例數(shù)據(jù)如下:

后文將以此作為操作對(duì)象,針對(duì)索引的幾種常用變換進(jìn)行介紹。

注:這里的索引應(yīng)廣義的理解為既包擴(kuò)行索引,也包括列標(biāo)簽。

02 reindex和rename

學(xué)習(xí)pandas之初,reindex和rename容易使人混淆的一組接口,就其具體功能來(lái)看:

  • reindex執(zhí)行的是索引重組操作,接收一組標(biāo)簽序列作為新索引,既適用于行索引也適用于列標(biāo)簽名,重組之后索引數(shù)量可能發(fā)生變化,索引名為傳入標(biāo)簽序列
  • rename執(zhí)行的是索引重命名操作,接收一個(gè)字典映射或一個(gè)變換函數(shù),也均適用于行列索引,重命名之后索引數(shù)量不發(fā)生改變,索引名可能發(fā)生變化

另外二者執(zhí)行功能和接收參數(shù)的套路也是很為相近的,均支持兩種變換方式:

  • 一種是變換內(nèi)容+axis指定作用軸(可選0/1或index/columns);
  • 另一種是直接用index/columns關(guān)鍵字指定作用軸

具體而言,reindex執(zhí)行索引重組操作,以新接收的一組標(biāo)簽序列作為索引,當(dāng)原DataFrame中存在該索引時(shí)則提取相應(yīng)行或列,否則賦值為空或填充指定值。對(duì)于前面介紹的示例數(shù)據(jù)df,以重組行索引為例,兩種可選方式為:

注意到原df中行索引為[1, 3, 5],而新重組的目標(biāo)索引為[1, 2, 3],其中[1, 3]為已有索引直接提取,[2, 4]在原df中不存在,所以填充空值;同時(shí),原df中索引[5]由于不在指定索引中,所以遭舍棄。進(jìn)一步地,由于重組后可能存在空值,reindex提供了填充空值的可選參數(shù)fill_value和method,二者用法與fillna方法一致,前者用于指定固定值填充,后者用于指定填充策略,例如:

rename用法套路與reindex很為相近,但執(zhí)行功能完全不同,主要用于執(zhí)行索引重命名操作,接收一個(gè)字典或一個(gè)重命名規(guī)則的函數(shù)類型,示例如下:

03 index.map

針對(duì)DataFrame中的數(shù)據(jù),pandas中提供了一對(duì)功能有些相近的接口:map和apply,以及applymap,其中map僅可用于DataFrame中的一列(也即即Series),可接收字典或函數(shù)完成單列數(shù)據(jù)的變換;apply既可用于一列(即Series)也可用于多列(即DataFrame),但僅可接收函數(shù)作為參數(shù),當(dāng)作用于Series時(shí)對(duì)每個(gè)元素進(jìn)行變換,作用于DataFrame時(shí)對(duì)其中的每一行或每一列進(jìn)行變換;而applymap則僅可作用于DataFrame,且作用對(duì)象是對(duì)DataFrame中的每個(gè)元素進(jìn)行變換。也就是說(shuō),三者的最大不同在于作用范圍以及變換方式的不同。

實(shí)際上,apply和map還有一個(gè)細(xì)微區(qū)別在于:同樣是可作用于單列對(duì)象,apply適用于索引這種特殊的單列,而map則不適用。所以,對(duì)索引執(zhí)行變換的另一種可選方式是用map函數(shù),其具體操作方式與DataFrame常規(guī)map操作一致,接收一個(gè)函數(shù)作為參數(shù)即可:

04 set_index與reset_index

set_index和reset_index是一對(duì)互逆的操作,其中前者用于置位索引——將DataFrame中某一列設(shè)置為索引,同時(shí)丟棄原索引;而reset_index用于復(fù)位索引——將索引加入到數(shù)據(jù)中作為一列或直接丟棄,可選drop參數(shù)。二者是非常常用的一組操作,例如在執(zhí)行g(shù)roupby操作后一般會(huì)得到一個(gè)series類型,此時(shí)增加一個(gè)reset_index操作即可實(shí)現(xiàn)series轉(zhuǎn)換為DataFrame。當(dāng)然轉(zhuǎn)換的操作不止這一種。

05 stack與unstack

這也是一對(duì)互逆的操作,其中stack原義表示堆疊,實(shí)現(xiàn)將所有列標(biāo)簽堆疊到行索引中;unstack即解堆,用于將復(fù)合行索引中的一個(gè)維度索引平鋪到列標(biāo)簽中。實(shí)際上,二者的操作即是SQL中經(jīng)典的行轉(zhuǎn)列與列轉(zhuǎn)行,也即在長(zhǎng)表與寬表之間轉(zhuǎn)換。

當(dāng)然,實(shí)現(xiàn)unstack操作的方式還有pivot,此處不再展開。

到此這篇關(guān)于pd.DataFrame中的幾種索引變換的實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)pd.DataFrame 索引變換內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 一文帶你探索Python中15個(gè)常見的魔術(shù)方法

    一文帶你探索Python中15個(gè)常見的魔術(shù)方法

    在Python中,特殊方法(也稱為魔術(shù)方法)是由Python解釋器自動(dòng)調(diào)用的,我們不需要手動(dòng)調(diào)用它們,本文小編為大家整理了15個(gè)常見特殊方法的實(shí)現(xiàn),希望對(duì)大家有所幫助
    2024-01-01
  • django admin 添加自定義鏈接方式

    django admin 添加自定義鏈接方式

    這篇文章主要介紹了django admin 添加自定義鏈接方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-03-03
  • Python中?whl包、tar.gz包的區(qū)別詳解

    Python中?whl包、tar.gz包的區(qū)別詳解

    whl格式本質(zhì)上是一個(gè)壓縮包,里面包含了py文件,以及經(jīng)過(guò)編譯的pyd文件,這篇文章主要介紹了Python中?whl包、tar.gz包的區(qū)別,需要的朋友可以參考下
    2022-08-08
  • pip 錯(cuò)誤unused-command-line-argument-hard-error-in-future解決辦法

    pip 錯(cuò)誤unused-command-line-argument-hard-error-in-future解決辦法

    這篇文章主要介紹了Python包管理器pip安裝軟件時(shí)出現(xiàn)unused-command-line-argument-hard-error-in-future錯(cuò)誤的解決辦法,需要的朋友可以參考下
    2014-06-06
  • python登陸asp網(wǎng)站頁(yè)面的實(shí)現(xiàn)代碼

    python登陸asp網(wǎng)站頁(yè)面的實(shí)現(xiàn)代碼

    這篇文章主要介紹了python登陸asp網(wǎng)站頁(yè)面的實(shí)現(xiàn)代碼,需要的朋友可以參考下
    2015-01-01
  • 詳解用python實(shí)現(xiàn)爬取CSDN熱門評(píng)論URL并存入redis

    詳解用python實(shí)現(xiàn)爬取CSDN熱門評(píng)論URL并存入redis

    這篇文章主要介紹了詳解用python實(shí)現(xiàn)爬取CSDN熱門評(píng)論URL并存入redis,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-04-04
  • Python字符串本身作為bytes進(jìn)行解碼的問(wèn)題

    Python字符串本身作為bytes進(jìn)行解碼的問(wèn)題

    這篇文章主要介紹了解決Python字符串本身作為bytes進(jìn)行解碼的問(wèn)題,文末給大家補(bǔ)充介紹了,Python字符串如何轉(zhuǎn)為bytes對(duì)象?Python字符串和bytes類型怎么互轉(zhuǎn),需要的朋友可以參考下
    2022-11-11
  • Python各種相似度計(jì)算方法詳解

    Python各種相似度計(jì)算方法詳解

    這篇文章主要介紹了Python各種相似度計(jì)算方法詳解,在日常開發(fā)中有需要計(jì)算相似度的需求,那么今天我們就來(lái)看一下各種計(jì)算相似度的方法,對(duì)日常開發(fā)非常有幫助,需要的朋友可以參考下
    2023-07-07
  • 基python實(shí)現(xiàn)多線程網(wǎng)頁(yè)爬蟲

    基python實(shí)現(xiàn)多線程網(wǎng)頁(yè)爬蟲

    python是支持多線程的, 主要是通過(guò)thread和threading這兩個(gè)模塊來(lái)實(shí)現(xiàn)的,本文主要給大家分享python實(shí)現(xiàn)多線程網(wǎng)頁(yè)爬蟲,需要的朋友可以參考下
    2015-09-09
  • CentOS 7如何實(shí)現(xiàn)定時(shí)執(zhí)行python腳本

    CentOS 7如何實(shí)現(xiàn)定時(shí)執(zhí)行python腳本

    這篇文章主要介紹了CentOS 7如何實(shí)現(xiàn)定時(shí)執(zhí)行python腳本,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-06-06

最新評(píng)論