<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          拯救pandas計劃(3)——多級索引取值

          共 1595字,需瀏覽 4分鐘

           ·

          2022-02-13 12:04

          點擊上方“Python爬蟲與數(shù)據(jù)挖掘”,進(jìn)行關(guān)注

          回復(fù)“書籍”即可獲贈Python從入門到進(jìn)階共10本電子書

          繁華事散逐香塵,流水無情草自春。

          拯救pandas計劃(3)——多級索引取值

          • 數(shù)據(jù)需求

          • 需求拆解

          • 需求處理

            • 方法一:

            • 方法二:

          • 總結(jié)


          最近發(fā)現(xiàn)周圍的很多小伙伴們都不太樂意使用pandas,轉(zhuǎn)而投向其他的數(shù)據(jù)操作庫,身為一個數(shù)據(jù)工作者,基本上是張口pandas,閉口pandas了,故而寫下此系列以讓更多的小伙伴們愛上pandas。

          系列文章說明:

          系列名(系列文章序號)——此次系列文章具體解決的需求

          平臺:

          • windows 10
          • python 3.8
          • pandas 1.2.4

          數(shù)據(jù)需求

          給定一份多級索引數(shù)據(jù),查找指定值。

          需求拆解

          數(shù)據(jù)提取在pandas中,或者說在python中就是索引式提取,在單層索引中采用·.lo.iloc方法已經(jīng)非常常見了,然而在索引層次多了之后卻有點不知所措,也只需要將各個索引看成整體進(jìn)行提取就行。

          需求處理

          方法一:

          這里先給出一個比較笨拙的方法,先將索引進(jìn)行重置為列數(shù)據(jù),通過列取得bool條件再進(jìn)行提取

          datac.reset_index(inplace=True)
          datac[(datac['School']?==?'S_2')?&?(datac['Class']?==?'C_3')]

          可以看到通過該類方法可以成功取到對應(yīng)值

          當(dāng)然也可以采用.query方法進(jìn)行條件篩選

          datac.reset_index(inplace=True)
          datac.query("School?==?'S_1'?and?Class?==?'C_3'")

          方法二:

          既然為多級索引,pandas也會有對應(yīng)的取值方式,既可以用鏈?zhǔn)秸{(diào)用的方式,也可以通過元組進(jìn)行提取,首先看看多級索引的輸出值:
          是一個MultiIndex類型數(shù)據(jù),其元素都是元組,即也能通過元組的方式進(jìn)行索引調(diào)取

          這兩種都一個共同的特點,從左到右,要先外層再內(nèi)層,否則會報KeyError錯誤

          #?鏈?zhǔn)秸{(diào)用
          datac.loc['S_1'].loc['C_1']
          #?元組作為索引調(diào)用
          datac.loc[('S_3',?'C_1'),?:]

          tips:

          1. 多層索引,即列名上方有層次結(jié)構(gòu)也可以按這種方式進(jìn)行提取。

          2. 想越過外層索引提取內(nèi)層索引需要交換索引順序才能順利提取。

            #?swaplevel?交換索引層級
            datac.swaplevel(axis=0).loc[('C_1')]??#?axis=0:?index

          總結(jié)

          功夫再高,也怕菜刀。本例使用方法比較常規(guī),旨在鞏固基礎(chǔ)知識,當(dāng)下次遇到能夠想起可以直接索引取值而不用將索引重置為列值,以高效完成數(shù)據(jù)提取任務(wù)。

          在茫茫人海中,我與你僅有一瞥,卻通過你的眼睛里看到汪洋大海,我相信心靈的碰撞能帶來更長久的歡快。


          于二零二二年元月十三日作

          小伙伴們,快快用實踐一下吧!如果在學(xué)習(xí)過程中,有遇到任何問題,歡迎加我好友,我拉你進(jìn)Python學(xué)習(xí)交流群共同探討學(xué)習(xí)。

          -------------------?End?-------------------

          往期精彩文章推薦:

          歡迎大家點贊,留言,轉(zhuǎn)發(fā),轉(zhuǎn)載,感謝大家的相伴與支持

          想加入Python學(xué)習(xí)群請在后臺回復(fù)【入群

          萬水千山總是情,點個【在看】行不行

          /今日留言主題/

          隨便說一兩句吧~~

          瀏覽 32
          點贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  久久99精品蜜桃无码 | 国产一级a毛一级a毛视频在线网站) | 亚洲无码高清在线播放 | 性一交一A一V一视一频 | 亚洲天堂在线观看一区 |