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

詳解pandas中MultiIndex和對(duì)象實(shí)際索引不一致問(wèn)題

 更新時(shí)間:2019年07月23日 14:17:29   作者:S_o_l_o_n  
這篇文章主要介紹了詳解pandas中MultiIndex和對(duì)象實(shí)際索引不一致問(wèn)題,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

在最新版的pandas中(不知道之前的版本有沒(méi)有這個(gè)問(wèn)題),當(dāng)我們對(duì)具有多層次索引的對(duì)象做切片或者通過(guò)df[bool_list]的方式索引的時(shí)候,得到的新的對(duì)象盡管實(shí)際索引已經(jīng)發(fā)生了改變,但是當(dāng)直接使用df_new.index調(diào)取新對(duì)象的MultiIndex對(duì)象的時(shí)候,這個(gè)MultiIndex對(duì)象還是和原對(duì)象的索引保持一致的,而不是和新對(duì)象的實(shí)際索引保持一致。這點(diǎn)需要特別注意,因?yàn)檎G闆r下,我們自然會(huì)認(rèn)為df.index的MultiIndex對(duì)象和df的實(shí)際索引是一致的,基于此,我們可能會(huì)寫出一些難以發(fā)現(xiàn)的bug??梢钥聪旅娴睦印?/p>

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對(duì)象的輸出結(jié)果和下面index的輸出結(jié)果可以發(fā)現(xiàn),df_t2的index和其實(shí)際的索引并不一致
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對(duì)象的輸出結(jié)果和下面index的輸出結(jié)果可以發(fā)現(xiàn),df_t3的index和其實(shí)際的索引也不一致
Out[47]: 
MultiIndex(levels=[['a', 'b'], [0, 1]],
      codes=[[0, 0], [0, 1]])

從上面的例子可以看出,當(dāng)通過(guò)bool索引和切片索引時(shí),就會(huì)出現(xiàn)這種問(wèn)題,其他的索引方式一般不會(huì)出現(xiàn)這種問(wèn)題。當(dāng)遇到這種問(wèn)題時(shí),如果我們需要始終保持新對(duì)象的index得到的對(duì)象和實(shí)際索引一致,該如何做呢?請(qǐng)看下面代碼

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對(duì)象有一個(gè)remove_unused_levels()函數(shù),其作用是把沒(méi)有被使用的索引被去處掉,這樣就可以使得對(duì)象的MultiIndex對(duì)象和其實(shí)際顯示出來(lái)的索引保持一致了。故其實(shí)在遇到多層次索引的切片索引或者bool索引之后,加上一條df.index.remove_unused_levels()語(yǔ)句不失為一個(gè)好的習(xí)慣,或者至少得有這種意識(shí),意識(shí)到此處可能會(huì)出現(xiàn)這種問(wèn)題。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 詳解pycharm2020.1.1專業(yè)版安裝指南(推薦)

    詳解pycharm2020.1.1專業(yè)版安裝指南(推薦)

    這篇文章主要介紹了pycharm2020.1.1專業(yè)版安裝指南,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-08-08
  • Python如何利用opencv實(shí)現(xiàn)手勢(shì)識(shí)別

    Python如何利用opencv實(shí)現(xiàn)手勢(shì)識(shí)別

    這篇文章主要介紹了Python如何利用opencv實(shí)現(xiàn)手勢(shì)識(shí)別,文章圍繞主題展開(kāi)詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙可以參考一下
    2022-05-05
  • Python異常原理及異常捕捉實(shí)現(xiàn)過(guò)程解析

    Python異常原理及異常捕捉實(shí)現(xiàn)過(guò)程解析

    這篇文章主要介紹了Python異常原理及異常捕捉實(shí)現(xiàn)過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-03-03
  • 最新評(píng)論

    中超| 平湖市| 乌鲁木齐市| 驻马店市| 昭苏县| 乡宁县| 通许县| 桐柏县| 哈尔滨市| 象山县| 类乌齐县| 栾川县| 安康市| 龙川县| 临洮县| 无锡市| 枝江市| 砚山县| 西宁市| 防城港市| 宁津县| 德格县| 乌兰浩特市| 万年县| 仪征市| 藁城市| 洱源县| 楚雄市| 安顺市| 竹山县| 广汉市| 迁西县| 延安市| 闻喜县| 大竹县| 漾濞| 罗田县| 宜丰县| 建德市| 微山县| 山丹县|