<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
導讀:pandas中最常用的資料結構是DataFrame,而DataFrame相較於巢狀list或者二維numpy陣列更好用的原因之一在於其提供了行索引和列名。本文主要介紹行索引的幾種變換方式,包括rename與reindex、index.map、set_index與reset_index、stack與unstack等。
慣例開局一張圖
Series和DataFrame是pandas中的主要資料結構型別(老版本中曾有三維資料結構Panel,是DataFrame的容器,後被取消),而二者相較於傳統的陣列或list而言,最大的便利之處在於其提供了索引,DataFrame中還有列標籤名,這些都使得在操作一行或一列資料中非常方便,包括在資料存取、資料處理轉換等。關於索引的詳細介紹可參考前文:python資料科學系列:pandas入門詳細教學。
這裡,為了便於後文舉例解釋,給出基本的DataFrame樣例資料如下:
後文將以此作為操作物件,針對索引的幾種常用變換進行介紹。
注:這裡的索引應廣義的理解為既包擴行索引,也包括列標籤。
學習pandas之初,reindex和rename容易使人混淆的一組介面,就其具體功能來看:
另外二者執行功能和接收引數的套路也是很為相近的,均支援兩種變換方式:
具體而言,reindex執行索引重組操作,以新接收的一組標籤序列作為索引,當原DataFrame中存在該索引時則提取相應行或列,否則賦值為空或填充指定值。對於前面介紹的範例資料df,以重組行索引為例,兩種可選方式為:
注意到原df中行索引為[1, 3, 5],而新重組的目標索引為[1, 2, 3],其中[1, 3]為已有索引直接提取,[2, 4]在原df中不存在,所以填充空值;同時,原df中索引[5]由於不在指定索引中,所以遭捨棄。進一步地,由於重組後可能存在空值,reindex提供了填充空值的可選引數fill_value和method,二者用法與fillna方法一致,前者用於指定固定值填充,後者用於指定填充策略,例如:
rename用法套路與reindex很為相近,但執行功能完全不同,主要用於執行索引重新命名操作,接收一個字典或一個重新命名規則的函數型別,範例如下:
針對DataFrame中的資料,pandas中提供了一對功能有些相近的介面:map和apply,以及applymap,其中map僅可用於DataFrame中的一列(也即即Series),可接收字典或函數完成單列資料的變換;apply既可用於一列(即Series)也可用於多列(即DataFrame),但僅可接收函數作為引數,當作用於Series時對每個元素進行變換,作用於DataFrame時對其中的每一行或每一列進行變換;而applymap則僅可作用於DataFrame,且作用物件是對DataFrame中的每個元素進行變換。也就是說,三者的最大不同在於作用範圍以及變換方式的不同。
實際上,apply和map還有一個細微區別在於:同樣是可作用於單列物件,apply適用於索引這種特殊的單列,而map則不適用。所以,對索引執行變換的另一種可選方式是用map函數,其具體操作方式與DataFrame常規map操作一致,接收一個函數作為引數即可:
set_index和reset_index是一對互逆的操作,其中前者用於置位索引——將DataFrame中某一列設定為索引,同時丟棄原索引;而reset_index用於復位索引——將索引加入到資料中作為一列或直接丟棄,可選drop引數。二者是非常常用的一組操作,例如在執行groupby操作後一般會得到一個series型別,此時增加一個reset_index操作即可實現series轉換為DataFrame。當然轉換的操作不止這一種。
這也是一對互逆的操作,其中stack原義表示堆疊,實現將所有列標籤堆疊到行索引中;unstack即解堆,用於將複合行索引中的一個維度索引平鋪到列標籤中。實際上,二者的操作即是SQL中經典的行轉列與列轉行,也即在長表與寬表之間轉換。
當然,實現unstack操作的方式還有pivot,此處不再展開。
到此這篇關於pd.DataFrame中的幾種索引變換的實現的文章就介紹到這了,更多相關pd.DataFrame 索引變換內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45