91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

詳解pandas中MultiIndex和對象實際索引不一致問題

發布時間:2020-08-20 16:37:09 來源:腳本之家 閱讀:175 作者:S_o_l_o_n 欄目:開發技術

在最新版的pandas中(不知道之前的版本有沒有這個問題),當我們對具有多層次索引的對象做切片或者通過df[bool_list]的方式索引的時候,得到的新的對象盡管實際索引已經發生了改變,但是當直接使用df_new.index調取新對象的MultiIndex對象的時候,這個MultiIndex對象還是和原對象的索引保持一致的,而不是和新對象的實際索引保持一致。這點需要特別注意,因為正常情況下,我們自然會認為df.index的MultiIndex對象和df的實際索引是一致的,基于此,我們可能會寫出一些難以發現的bug。可以看下面的例子。

import pandas as pd
 
df_t1=pd.DataFrame([[1,2],[2,3],[2,3],[3,5]],index=[['a','a','b','b'],[0,1,0,1]])
 
df_t1
Out[39]: 
   0 1
a 0 1 2
 1 2 3
b 0 2 3
 1 3 5
 
df_t2=df_t1.loc[[x=='a' for x in df_t1.index.levels[0]]]
 
df_t2 
Out[41]: 
   0 1
a 0 1 2
 
df_t2.index  #從上面df_t2對象的輸出結果和下面index的輸出結果可以發現,df_t2的index和其實際的索引并不一致
Out[42]: 
MultiIndex(levels=[['a', 'b'], [0, 1]],
      codes=[[0], [0]])
 
df_t3=df_t1.iloc[:2,:]
 
df_t3
Out[46]: 
   0 1
a 0 1 2
 1 2 3
 
df_t3.index #從上面df_t3對象的輸出結果和下面index的輸出結果可以發現,df_t3的index和其實際的索引也不一致
Out[47]: 
MultiIndex(levels=[['a', 'b'], [0, 1]],
      codes=[[0, 0], [0, 1]])

從上面的例子可以看出,當通過bool索引和切片索引時,就會出現這種問題,其他的索引方式一般不會出現這種問題。當遇到這種問題時,如果我們需要始終保持新對象的index得到的對象和實際索引一致,該如何做呢?請看下面代碼

df_t2.index.remove_unused_levels()
Out[62]: 
MultiIndex(levels=[['a'], [0]],
      codes=[[0], [0]])
 
df_t2.index=df_t2.index.remove_unused_levels()
 
df_t2.index
Out[75]: 
MultiIndex(levels=[['a'], [0]],
      codes=[[0], [0]])
 
df_t2
Out[76]: 
   0 1
a 0 1 2

可以看到,MultiIndex對象有一個remove_unused_levels()函數,其作用是把沒有被使用的索引被去處掉,這樣就可以使得對象的MultiIndex對象和其實際顯示出來的索引保持一致了。故其實在遇到多層次索引的切片索引或者bool索引之后,加上一條df.index.remove_unused_levels()語句不失為一個好的習慣,或者至少得有這種意識,意識到此處可能會出現這種問題。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持億速云。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

通海县| 贵州省| 安西县| 崇义县| 九江县| 崇州市| 浮梁县| 海城市| 林周县| 诸城市| 广丰县| 隆安县| 承德市| 沂南县| 浪卡子县| 东丰县| 昭通市| 安新县| 沅陵县| 鹤庆县| 铁岭市| 吉安市| 昆山市| 蚌埠市| 常州市| 西乌珠穆沁旗| 江城| 民勤县| 拉萨市| 陆河县| 南漳县| 友谊县| 甘泉县| 东海县| 德阳市| 阳泉市| 万盛区| 温宿县| 北票市| 太和县| 天柱县|