欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

詳解pandas中iloc, loc和ix的區(qū)別和聯(lián)系

 更新時(shí)間:2020年03月09日 15:28:27   作者:anshuai_aw1  
這篇文章主要介紹了詳解pandas中iloc, loc和ix的區(qū)別和聯(lián)系,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

Pandas庫(kù)十分強(qiáng)大,但是對(duì)于切片操作iloc, loc和ix,很多人對(duì)此十分迷惑,因此本篇博客利用例子來(lái)說(shuō)明這3者之一的區(qū)別和聯(lián)系,尤其是iloc和loc。

對(duì)于ix,由于其操作有些復(fù)雜,我在另外一篇博客專門詳細(xì)介紹ix。

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

  • loc gets rows (or columns) with particular labels from the index. loc從索引中獲取具有特定標(biāo)簽的行(或列)。這里的關(guān)鍵是:標(biāo)簽。標(biāo)簽的理解就是name名字。
  • iloc gets rows (or columns) at particular positions in the index (so it only takes integers). iloc在索引中的特定位置獲取行(或列)(因此它只接受整數(shù))。這里的關(guān)鍵是:位置。位置的理解就是排第幾個(gè)。
  • ix usually tries to behave like loc but falls back to behaving like iloc if a label is not present in the index. ix通常會(huì)嘗試像loc一樣行為,但如果索引中不存在標(biāo)簽,則會(huì)退回到像iloc一樣的行為。(這句話有些繞口,沒關(guān)系,不明白可以看這里)

接下來(lái),舉幾個(gè)例子說(shuō)明:

1 loc

其實(shí),對(duì)于loc始終堅(jiān)持一個(gè)原則:loc是基于label進(jìn)行索引的!

import pandas as pd
df1 = pd.DataFrame(data= [[1, 2, 3],[4, 5, 6], [7, 8, 9]], index=[0, 1, 2], columns=['a','b','c'])
df2 = pd.DataFrame(data= [[1, 2, 3],[4, 5, 6], [7, 8, 9]], index=['e', 'f', 'g'], columns=['a','b','c'])
print(df1)
print(df2)
'''
df1:
  a b c
0 1 2 3
1 4 5 6
2 7 8 9
df2:
  a b c
e 1 2 3
f 4 5 6
g 7 8 9
'''
 
# loc索引行,label是整型數(shù)字
print(df1.loc[0])
'''
a  1
b  2
c  3
Name: 0, dtype: int64
'''
 
# loc索引行,label是字符型
print(df2.loc['e'])
'''
a  1
b  2
c  3
Name: 0, dtype: int64
'''
# 如果對(duì)df2這么寫:df2.loc[0]會(huì)報(bào)錯(cuò),因?yàn)閘oc索引的是label,顯然在df2的行的名字中沒有叫0的。
print(df2.loc[0])
'''
TypeError: cannot do slice indexing on <class 'pandas.core.indexes.base.Index'> with these indexers [0] of <class 'int'>
'''
 
# loc索引多行數(shù)據(jù)
print(df1.loc[1:])
'''
  a b c
1 4 5 6
2 7 8 9
'''
 
# loc索引多列數(shù)據(jù)
print(df1.loc[:,['a', 'b']])
'''
  a b
0 1 2
1 4 5
2 7 8
'''
# df1.loc[:,0:2]這么寫報(bào)錯(cuò), 因?yàn)閘oc索引的是label,顯然在df1的列的名字中沒有叫0,1和2的。
print(df1.loc[:,0:2])
'''
TypeError: cannot do slice indexing on <class 'pandas.core.indexes.base.Index'> with these indexers [0] of <class 'int'>
'''
 
# locs索引某些行某些列
print(df1.loc[0:2, ['a', 'b']])
'''
  a b
0 1 2
1 4 5
2 7 8
'''

2 iloc

其實(shí),對(duì)于iloc始終堅(jiān)持一個(gè)原則:iloc是基于position進(jìn)行索引的!

import pandas as pd
df1 = pd.DataFrame(data= [[1, 2, 3],[4, 5, 6], [7, 8, 9]], index=[0, 1, 2], columns=['a','b','c'])
df2 = pd.DataFrame(data= [[1, 2, 3],[4, 5, 6], [7, 8, 9]], index=['e', 'f', 'g'], columns=['a','b','c'])
print(df1)
print(df2)
'''
df1:
  a b c
0 1 2 3
1 4 5 6
2 7 8 9
df2:
  a b c
e 1 2 3
f 4 5 6
g 7 8 9
'''
# iloc索引行,label是整型數(shù)字
print(df1.iloc[0])
'''
a  1
b  2
c  3
Name: 0, dtype: int64
'''
 
# iloc索引行,label是字符型。如果按照l(shuí)oc的寫法來(lái)寫應(yīng)該是:df2.iloc['e'],顯然這樣報(bào)錯(cuò),因?yàn)閕loc不認(rèn)識(shí)label,它是基于位置的。
print(df2.iloc['e'])
'''
TypeError: cannot do positional indexing on <class 'pandas.core.indexes.base.Index'> with these indexers [e] of <class 'str'>
'''
# iloc索引行,label是字符型。正確的寫法應(yīng)該如下:
# 也就說(shuō),不論index是什么類型的,iloc只能寫位置,也就是整型數(shù)字。
print(df2.iloc[0])
'''
a  1
b  2
c  3
Name: e, dtype: int64
'''
 
# iloc索引多行數(shù)據(jù)
print(df1.iloc[1:])
'''
  a b c
1 4 5 6
2 7 8 9
'''
 
# iloc索引多列數(shù)據(jù)
# 如果如下寫法,報(bào)錯(cuò)。
print(df1.iloc[:,['a', 'b']])
'''
TypeError: cannot perform reduce with flexible type
'''
# iloc索引多列數(shù)據(jù), 正確寫法如下:
print(df1.iloc[:,0:2])
'''
  a b
0 1 2
1 4 5
2 7 8
'''
 
# iloc索引某些行某些列
print(df1.iloc[0:2, 0:1])
'''
  a
0 1
1 4
'''

3 ix

ix的操作比較復(fù)雜,在pandas版本0.20.0及其以后版本中,ix已經(jīng)不被推薦使用,建議采用iloc和loc實(shí)現(xiàn)ix。

如有對(duì)ix的使用比較感興趣的朋友可以參考這篇博客

到此這篇關(guān)于詳解pandas中iloc, loc和ix的區(qū)別和聯(lián)系的文章就介紹到這了,更多相關(guān)pandas iloc loc ix內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • python實(shí)現(xiàn)RSA加密(解密)算法

    python實(shí)現(xiàn)RSA加密(解密)算法

    RSA是目前最有影響力的公鑰加密算法,它能夠抵抗到目前為止已知的絕大多數(shù)密碼攻擊,已被ISO推薦為公鑰數(shù)據(jù)加密標(biāo)準(zhǔn),下面通過(guò)本文給大家介紹python實(shí)現(xiàn)RSA加密(解密)算法,需要的朋友參考下
    2016-02-02
  • 完美解決matplotlib子圖坐標(biāo)軸重疊問(wèn)題

    完美解決matplotlib子圖坐標(biāo)軸重疊問(wèn)題

    這篇文章主要介紹了完美解決matplotlib子圖坐標(biāo)軸重疊問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2021-04-04
  • python實(shí)現(xiàn)TCPclient的使用示例

    python實(shí)現(xiàn)TCPclient的使用示例

    python實(shí)現(xiàn)TCPclient是一件簡(jiǎn)單的事情,只要通過(guò)socket這個(gè)模塊就可以實(shí)現(xiàn),本文主要介紹了python實(shí)現(xiàn)TCPclient的使用示例,具有一定的參考價(jià)值,感興趣的可以了解一下
    2023-10-10
  • python3 求約數(shù)的實(shí)例

    python3 求約數(shù)的實(shí)例

    今天小編就為大家分享一篇python3 求約數(shù)的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-12-12
  • python如何將.tif格式圖批量轉(zhuǎn)化為.jpg格式圖

    python如何將.tif格式圖批量轉(zhuǎn)化為.jpg格式圖

    這篇文章主要介紹了python如何將.tif格式圖批量轉(zhuǎn)化為.jpg格式圖問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-06-06
  • python?爬取豆瓣電影短評(píng)并利用wordcloud生成詞云圖

    python?爬取豆瓣電影短評(píng)并利用wordcloud生成詞云圖

    這篇文章主要介紹了python?爬取豆瓣電影短評(píng)并利用wordcloud生成詞云圖,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-06-06
  • 用Python調(diào)用win命令行提高工作效率的實(shí)例

    用Python調(diào)用win命令行提高工作效率的實(shí)例

    今天小編就為大家分享一篇用Python調(diào)用win命令行提高工作效率的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-08-08
  • python 自動(dòng)批量打開網(wǎng)頁(yè)的示例

    python 自動(dòng)批量打開網(wǎng)頁(yè)的示例

    今天小編就為大家分享一篇python 自動(dòng)批量打開網(wǎng)頁(yè)的示例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-02-02
  • pytorch之深度神經(jīng)網(wǎng)絡(luò)概念全面整理

    pytorch之深度神經(jīng)網(wǎng)絡(luò)概念全面整理

    這篇文章主要介紹了pytorch之深度神經(jīng)網(wǎng)絡(luò)概念,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-09-09
  • Flask框架運(yùn)用Ajax實(shí)現(xiàn)數(shù)據(jù)交互的示例代碼

    Flask框架運(yùn)用Ajax實(shí)現(xiàn)數(shù)據(jù)交互的示例代碼

    使用Ajax技術(shù)網(wǎng)頁(yè)應(yīng)用能夠快速地將增量更新呈現(xiàn)在用戶界面上,而不需要重載刷新整個(gè)頁(yè)面,這使得程序能夠更快地回應(yīng)用戶的操作,本文將簡(jiǎn)單介紹使用AJAX如何實(shí)現(xiàn)前后端數(shù)據(jù)通信
    2022-11-11

最新評(píng)論