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

pandas中ix的使用詳細講解

 更新時間:2020年03月09日 15:25:20   作者:anshuai_aw1  
這篇文章主要介紹了pandas中ix的使用詳細講解,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

在上一篇博客中,我們已經(jīng)仔細講解了iloc和loc,只是簡單了提到了ix。這是因為相比于前2者,ix更復(fù)雜,也更讓人迷惑。

因此,本篇博客通過例子的解釋試圖來描述清楚ix,尤其是與iloc和loc的聯(lián)系。

首先,再次介紹這三種方法的概述:

  • loc gets rows (or columns) with particular labels from the index. loc從索引中獲取具有特定標簽的行(或列)。
  • iloc gets rows (or columns) at particular positions in the index (so it only takes integers). iloc在索引中的特定位置獲取行(或列)(因此它只接受整數(shù))。
  • ix usually tries to behave like loc but falls back to behaving like iloc if a label is not present in the index. ix通常會嘗試像loc一樣行為,但如果索引中不存在標簽,則會退回到像iloc一樣的行為。(這句話有些繞口,沒關(guān)系,關(guān)于ix特點,后面會詳細講解)

1 使用ix切分Series

請注意:在pandas版本0.20.0及其以后版本中,ix已經(jīng)不被推薦使用,建議采用iloc和loc實現(xiàn)ix。這是為什么呢?這是由于ix的復(fù)雜特點可能使ix使用起來有些棘手:

  1. 如果索引是整數(shù)類型,則ix將僅使用基于標簽的索引,而不會回退到基于位置的索引。如果標簽不在索引中,則會引發(fā)錯誤。
  2. 如果索引不僅包含整數(shù),則給定一個整數(shù),ix將立即使用基于位置的索引而不是基于標簽的索引。但是,如果ix被賦予另一種類型(例如字符串),則它可以使用基于標簽的索引。

接下來舉例說明這2個特點。

1.1 特點1舉例

>>> s = pd.Series(np.nan, index=[49,48,47,46,45, 1, 2, 3, 4, 5])
>>> s
49 NaN
48 NaN
47 NaN
46 NaN
45 NaN
1 NaN
2 NaN
3 NaN
4 NaN
5 NaN

現(xiàn)在我們來看使用整數(shù)3切片有什么結(jié)果:

在這個例子中,s.iloc[:3]讀取前3行(因為iloc把3看成是位置position),而s.loc[:3]讀取的是前8行(因為loc把3看作是索引的標簽label)

>>> s.iloc[:3] # slice the first three rows
49 NaN
48 NaN
47 NaN
 
>>> s.loc[:3] # slice up to and including label 3
49 NaN
48 NaN
47 NaN
46 NaN
45 NaN
1 NaN
2 NaN
3 NaN
 
>>> s.ix[:3] # the integer is in the index so s.ix[:3] works like loc
49 NaN
48 NaN
47 NaN
46 NaN
45 NaN
1 NaN
2 NaN
3 NaN

注意:s.ix[:3]返回的結(jié)果與s.loc[:3]一樣,這是因為如果series的索引是整型的話,ix會首先去尋找索引中的標簽3而不是去找位置3。

如果,我們試圖去找一個不在索引中的標簽,比如說是6呢?

>>> s.iloc[:6]
49 NaN
48 NaN
47 NaN
46 NaN
45 NaN
1 NaN
 
>>> s.loc[:6]
KeyError: 6
 
>>> s.ix[:6]
KeyError: 6

在上面的例子中,s.iloc[:6]正如我們所期望的,返回了前6行。而,s.loc[:6]返回了KeyError錯誤,這是因為標簽6并不在索引中。

那么,s.ix[:6]報錯的原因是什么呢?正如我們在ix的特點1所說的那樣,如果索引只有整數(shù)類型,那么ix僅使用基于標簽的索引,而不會回退到基于位置的索引。如果標簽不在索引中,則會引發(fā)錯誤。

1.2 特點2舉例

接著例子1來說,如果我們的索引是一個混合的類型,即不僅僅包括整型,也包括其他類型,如字符類型。那么,給ix一個整型數(shù)字,ix會立即使用iloc操作,而不是報KeyError錯誤。

>>> s2 = pd.Series(np.nan, index=['a','b','c','d','e', 1, 2, 3, 4, 5])
>>> s2.index.is_mixed() # index is mix of different types
True
>>> s2.ix[:6] # now behaves like iloc given integer
a NaN
b NaN
c NaN
d NaN
e NaN
1 NaN

注意:在這種情況下,ix也可以接受非整型,這樣就是loc的操作:

>>> s2.ix[:'c'] # behaves like loc given non-integer
a NaN
b NaN
c NaN

這個例子就說明了ix特點2。

正如前面所介紹的,ix的使用有些復(fù)雜。如果僅使用位置或者標簽進行切片,使用iloc或者loc就行了,請避免使用ix。

2 在Dataframe中使用ix實現(xiàn)復(fù)雜切片

有時候,在使用Dataframe進行切片時,我們想混合使用標簽和位置來對行和列進行切片。那么,應(yīng)該怎么操作呢?

舉例,考慮有下述例子中的Dataframe。我們想得到直到包含標簽'c'的行和前4列。

>>> df = pd.DataFrame(np.nan, 
      index=list('abcde'),
      columns=['x','y','z', 8, 9])
>>> df
 x y z 8 9
a NaN NaN NaN NaN NaN
b NaN NaN NaN NaN NaN
c NaN NaN NaN NaN NaN
d NaN NaN NaN NaN NaN
e NaN NaN NaN NaN NaN

在pandas的早期版本(0.20.0)之前,ix可以很好地實現(xiàn)這個功能。

我們可以使用標簽來切分行,使用位置來切分列(請注意:因為4并不是列的名字,因為ix在列上是使用的iloc)。

>>> df.ix[:'c', :4]
 x y z 8
a NaN NaN NaN NaN
b NaN NaN NaN NaN
c NaN NaN NaN NaN

在pandas的后來版本中,我們可以使用iloc和其它的一個方法就可以實現(xiàn)上述功能:

>>> df.iloc[:df.index.get_loc('c') + 1, :4]
 x y z 8
a NaN NaN NaN NaN
b NaN NaN NaN NaN
c NaN NaN NaN NaN

get_loc() 是得到標簽在索引中的位置的方法。請注意,因為使用iloc切片時不包括最后1個點,因為我們必須加1。

可以看到,只使用iloc更好用,因為不必理會ix的那2個“繁瑣”的特點。

3 參考文獻
https://stackoverflow.com/questions/31593201/pandas-iloc-vs-ix-vs-loc-explanation-how-are-they-different

到此這篇關(guān)于pandas中ix的使用詳細講解的文章就介紹到這了,更多相關(guān)pandas ix內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python中的pip命令安裝與使用輕松入門教程

    Python中的pip命令安裝與使用輕松入門教程

    pip是Python的包管理工具,用于安裝、卸載和管理第三方庫,本文詳細介紹了pip的安裝和使用方法,包括檢查pip是否已安裝、手動安裝或升級pip以及pip的基本使用,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2024-11-11
  • 淺談ROC曲線的最佳閾值如何選取

    淺談ROC曲線的最佳閾值如何選取

    今天小編就為大家分享一篇淺談ROC曲線的最佳閾值如何選取,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-02-02
  • Python使用pathlib進行文件系統(tǒng)操作

    Python使用pathlib進行文件系統(tǒng)操作

    pathlib?是?Python?的一個標準庫,它提供了一個面向?qū)ο蟮奈募到y(tǒng)路徑操作接口,本文主要介紹了Python使用pathlib進行文件系統(tǒng)操作的相關(guān)知識,有需要的可以了解下
    2024-11-11
  • 通過Python實現(xiàn)自動填寫調(diào)查問卷

    通過Python實現(xiàn)自動填寫調(diào)查問卷

    這篇文章主要介紹了通過Python實現(xiàn)自動填寫調(diào)查問卷的相關(guān)資料,需要的朋友可以參考下
    2017-09-09
  • 如何使用python爬取知乎熱榜Top50數(shù)據(jù)

    如何使用python爬取知乎熱榜Top50數(shù)據(jù)

    主要是爬取知乎熱榜的問題及點贊數(shù)比較高的答案,通過requests請求庫進行爬取,對大家的學(xué)習(xí)或工作具有一定的價值,需要的朋友可以參考下
    2021-09-09
  • python如何利用中心坐標繪制矩形

    python如何利用中心坐標繪制矩形

    這篇文章主要介紹了python如何利用中心坐標繪制矩形問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • python使用lxml xpath模塊解析XML遇到的坑及解決

    python使用lxml xpath模塊解析XML遇到的坑及解決

    這篇文章主要介紹了python使用lxml xpath模塊解析XML遇到的坑及解決,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-05-05
  • python中time模塊的幾個時間轉(zhuǎn)化方式

    python中time模塊的幾個時間轉(zhuǎn)化方式

    這篇文章主要介紹了python中time模塊的幾個時間轉(zhuǎn)化方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-08-08
  • Python自動化辦公之群發(fā)郵件案例詳解

    Python自動化辦公之群發(fā)郵件案例詳解

    我們在辦公時常常會遇到需要將郵件群發(fā)給很多客戶,這個時候如何快速完成這一任務(wù)呢?不要慌,本文將為大家提供用Python代碼解決這一問題的方法,需要的可以參考一下
    2022-02-02
  • python 獲取文件列表(或是目錄例表)

    python 獲取文件列表(或是目錄例表)

    在python的應(yīng)用過程中,經(jīng)常會用到獲取文件列表的方法,常規(guī)的做法是這樣的
    2009-03-03

最新評論

扬州市| 临潭县| 永川市| 长泰县| 中山市| 正阳县| 高要市| 云南省| 象州县| 周口市| 洞口县| 明溪县| 延津县| 绍兴县| 铁岭市| 和田县| 石首市| 黎川县| 遂宁市| 龙泉市| 辛集市| 万州区| 凌海市| 和田市| 宁阳县| 中西区| 界首市| 荔波县| 含山县| 黑水县| 沁水县| 宜宾市| 西盟| 苍梧县| 广平县| 阳山县| 乌拉特后旗| 烟台市| 神木县| 丹东市| 海阳市|