亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

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

在最新版的pandas中(不知道之前的版本有沒有這個問題),當(dāng)我們對具有多層次索引的對象做切片或者通過df[bool_list]的方式索引的時候,得到的新的對象盡管實(shí)際索引已經(jīng)發(fā)生了改變,但是當(dāng)直接使用df_new.index調(diào)取新對象的MultiIndex對象的時候,這個MultiIndex對象還是和原對象的索引保持一致的,而不是和新對象的實(shí)際索引保持一致。這點(diǎn)需要特別注意,因?yàn)檎G闆r下,我們自然會認(rèn)為df.index的MultiIndex對象和df的實(shí)際索引是一致的,基于此,我們可能會寫出一些難以發(fā)現(xiàn)的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對象的輸出結(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對象的輸出結(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)通過bool索引和切片索引時,就會出現(xiàn)這種問題,其他的索引方式一般不會出現(xiàn)這種問題。當(dāng)遇到這種問題時,如果我們需要始終保持新對象的index得到的對象和實(shí)際索引一致,該如何做呢?請看下面代碼

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

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

相關(guān)文章

  • python多進(jìn)程并發(fā)的實(shí)現(xiàn)示例

    python多進(jìn)程并發(fā)的實(shí)現(xiàn)示例

    python中的多線程無法利用多核優(yōu)勢,如果想要充分地使用多核CPU的資源,在python中大部分情況需要使用多進(jìn)程,本文主要介紹了python多進(jìn)程并發(fā)的實(shí)現(xiàn)示例,感興趣的可以了解一下
    2024-02-02
  • Python搭建自己IP代理池的方法實(shí)現(xiàn)

    Python搭建自己IP代理池的方法實(shí)現(xiàn)

    本文主要介紹了Python搭建自己IP代理池的方法實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-02-02
  • python?snap7讀寫PLC的操作方法

    python?snap7讀寫PLC的操作方法

    這篇文章主要介紹了python?snap7讀寫PLC的操作方法,本文結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-02-02
  • python將字符串列表轉(zhuǎn)換為數(shù)值列表的幾種方法

    python將字符串列表轉(zhuǎn)換為數(shù)值列表的幾種方法

    這篇文章主要介紹了python將字符串列表轉(zhuǎn)換為數(shù)值列表的幾種方法,包括使用map()和float()/int()、列表推導(dǎo)式、pandas庫以及numpy庫,每種方法都有其適用場景,如小型列表、靈活轉(zhuǎn)換、處理復(fù)雜數(shù)據(jù)集和大規(guī)模數(shù)據(jù)計(jì)算等,需要的朋友可以參考下
    2025-04-04
  • Python爬蟲爬取電影票房數(shù)據(jù)及圖表展示操作示例

    Python爬蟲爬取電影票房數(shù)據(jù)及圖表展示操作示例

    這篇文章主要介紹了Python爬蟲爬取電影票房數(shù)據(jù)及圖表展示操作,結(jié)合實(shí)例形式分析了Python爬蟲爬取、解析電影票房數(shù)據(jù)并進(jìn)行圖表展示操作相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下
    2020-03-03
  • 初步解析Python下的多進(jìn)程編程

    初步解析Python下的多進(jìn)程編程

    這篇文章主要介紹了初步解析Python下的多進(jìn)程編程,使用多進(jìn)程編程一直是Python編程當(dāng)中的重點(diǎn)和難點(diǎn),需要的朋友可以參考下
    2015-04-04
  • Python中實(shí)現(xiàn)定時任務(wù)詳解

    Python中實(shí)現(xiàn)定時任務(wù)詳解

    這篇文章主要介紹了Python中實(shí)現(xiàn)定時任務(wù)詳解的相關(guān)資料,需要的朋友可以參考下
    2023-07-07
  • 讓Python程序定時執(zhí)行的8種方法整理

    讓Python程序定時執(zhí)行的8種方法整理

    在日常工作中,我們常常會用到需要周期性執(zhí)行的任務(wù),一種方式是采用?Linux?系統(tǒng)自帶的?crond?結(jié)合命令行實(shí)現(xiàn),另外一種方式是直接使用Python。本文整理了一下?Python?定時任務(wù)的實(shí)現(xiàn)方式,希望對大家有所幫助
    2023-01-01
  • 利用Python實(shí)現(xiàn)智能合約的示例詳解

    利用Python實(shí)現(xiàn)智能合約的示例詳解

    智能合約是一種由計(jì)算機(jī)程序編寫的自動化合約,它可以在沒有第三方干預(yù)的情況下執(zhí)行交易和契約條款。這篇文章主要介紹了如何利用Python實(shí)現(xiàn)智能合約,需要的可以參考一下
    2023-04-04
  • Python使用scipy模塊實(shí)現(xiàn)一維卷積運(yùn)算示例

    Python使用scipy模塊實(shí)現(xiàn)一維卷積運(yùn)算示例

    這篇文章主要介紹了Python使用scipy模塊實(shí)現(xiàn)一維卷積運(yùn)算,結(jié)合實(shí)例形式分析了scipy模塊的功能及使用scipy模塊進(jìn)行一維卷積運(yùn)算的相關(guān)操作技巧,需要的朋友可以參考下
    2019-09-09

最新評論