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

Pandas中iloc[]和loc[]的實(shí)現(xiàn)示例

 更新時(shí)間:2026年04月28日 09:56:40   作者:人工干智能  
Pandas中的iloc[]和loc[]是數(shù)據(jù)索引的核心方法,主要區(qū)別在于索引依據(jù),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

iloc[]和loc[]是Pandas中用于數(shù)據(jù)索引/切片的核心方法,核心區(qū)別在于索引依據(jù)不同:iloc基于“整數(shù)位置”,loc基于“標(biāo)簽(行索引名/列名)”。以下分點(diǎn)對(duì)比并結(jié)合實(shí)例說明:

一、區(qū)別對(duì)比

維度iloc[](integer location)loc[](label location)
索引依據(jù)行/列的整數(shù)位置(從0開始計(jì)數(shù))行的索引名、列的列名(標(biāo)簽)
切片規(guī)則左閉右開(如0:2僅包含位置0、1)包含終點(diǎn)(如'a':'c'包含標(biāo)簽a、b、c)
支持的索引類型整數(shù)、整數(shù)列表、整數(shù)切片、布爾數(shù)組標(biāo)簽、標(biāo)簽列表、標(biāo)簽切片、布爾數(shù)組
適用場(chǎng)景按數(shù)據(jù)的“物理順序”取數(shù)(不管行/列標(biāo)簽)按數(shù)據(jù)的“邏輯標(biāo)簽”取數(shù)(依賴行/列的命名)

注:Pandas 的 “列標(biāo)簽” 和 “行標(biāo)簽” 分別對(duì)應(yīng) DataFrame.columns 和 DataFrame.index。而機(jī)器學(xué)習(xí)中的 “樣本標(biāo)簽”是指樣本的目標(biāo)值(label / 目標(biāo)變量),二者不同。
注:iloc和loc都支持可調(diào)用對(duì)象(callable)(比如df.loc[lambda df: df[‘列名’]>0])

二、實(shí)例演示(構(gòu)造帶自定義標(biāo)簽的DataFrame)

先創(chuàng)建一個(gè)行索引為自定義標(biāo)簽的DataFrame(避免默認(rèn)整數(shù)索引,更易體現(xiàn)區(qū)別):

import pandas as pd

data = pd.DataFrame(
    data={'數(shù)學(xué)': [90, 85, 78], '英語': [88, 92, 75]},
    index=['張三', '李四', '王五']  # 行標(biāo)簽(非默認(rèn)整數(shù))
)
print("原始DataFrame:")
print(data)

輸出:

    數(shù)學(xué)  英語
張三  90  88
李四  85  92
王五  78  75

1. iloc取單行/loc取單列

  • iloc(按整數(shù)位置):行位置0對(duì)應(yīng)“張三”,列位置0對(duì)應(yīng)“數(shù)學(xué)”
    data.iloc[0]  # 取第1行(位置0)
    # 輸出:
    # 數(shù)學(xué)    90
    # 英語    88
    # Name: 張三, dtype: int64
    
  • loc(按標(biāo)簽):直接用行標(biāo)簽“張三”、列名“數(shù)學(xué)”
    data.loc['張三']  # 取標(biāo)簽為“張三”的行
    # 輸出同iloc[0]
    

2. iloc取多行/loc取多列(切片)

  • iloc(左閉右開)0:2僅包含位置0、1(對(duì)應(yīng)“張三”“李四”)
    data.iloc[0:2]  # 取位置0到2(不含2)的行
    # 輸出:
    #    數(shù)學(xué)  英語
    # 張三  90  88
    # 李四  85  92
  • loc(包含終點(diǎn))'張三':'王五'包含所有標(biāo)簽在“張三”到“王五”之間的行
    data.loc['張三':'王五']  # 取標(biāo)簽從“張三”到“王五”的行(含王五)
    # 輸出:
    #    數(shù)學(xué)  英語
    # 張三  90  88
    # 李四  85  92
    # 王五  78  75
    

3. 取特定行+列(二維索引)

  • iloc(行位置+列位置):行位置1(李四)、列位置1(英語)
    data.iloc[1, 1]  # 取第2行(位置1)、第2列(位置1)的值
    # 輸出:92
    
  • loc(行標(biāo)簽+列名):行標(biāo)簽“李四”、列名“英語”
    data.loc['李四', '英語']  # 取“李四”行、“英語”列的值
    # 輸出:92
    

4. 布爾索引(按條件取數(shù))

兩者都支持布爾數(shù)組,但loc更常用(直接關(guān)聯(lián)標(biāo)簽):

# 條件:數(shù)學(xué)分?jǐn)?shù)>80
mask = data['數(shù)學(xué)'] > 80

# iloc:先獲取滿足條件的行位置,再取數(shù)
data.iloc[mask.values]  # mask.values是布爾數(shù)組,對(duì)應(yīng)行位置
# 輸出:
#    數(shù)學(xué)  英語
# 張三  90  88
# 李四  85  92

# loc:直接用布爾數(shù)組取數(shù)(更直觀)
data.loc[mask]
# 輸出同iloc

三、注意點(diǎn)

  1. 若DataFrame用默認(rèn)整數(shù)行索引(如0、1、2),iloc[0]loc[0]結(jié)果可能相同,但邏輯本質(zhì)不同:iloc[0]是“取位置0”,loc[0]是“取標(biāo)簽為0的行”;
  2. iloc的切片不包含終點(diǎn)(如0:3取0、1、2),loc的切片包含終點(diǎn)(如0:3取標(biāo)簽0、1、2、3),這是最易踩坑的差異;
  3. 實(shí)際場(chǎng)景中:
    • 若需要按“數(shù)據(jù)的物理順序”取數(shù)(如“前5行”),用iloc;
    • 若需要按“行/列的命名”取數(shù)(如“取‘張三’的成績”),用loc。

測(cè)試:看你是否能讀懂這句程序:

numerical_df.loc[numerical_df['A'] < numerical_df['B'], 'A'] = 100

到此這篇關(guān)于Pandas中iloc[]和loc[]的實(shí)現(xiàn)示例的文章就介紹到這了,更多相關(guān)Pandas iloc[]和loc[]內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論

华蓥市| 侯马市| 中西区| 临高县| 获嘉县| 九台市| 江城| 临汾市| 张北县| 上杭县| 上杭县| 云林县| 九寨沟县| 津南区| 舒城县| 扶余县| 渭源县| 夏河县| 根河市| 龙口市| 定结县| 安溪县| 城口县| 蚌埠市| 古浪县| 福州市| 安宁市| 千阳县| 巨鹿县| 巨鹿县| 新兴县| 四会市| 四会市| 盱眙县| 龙井市| 杂多县| 江安县| 河津市| 临沂市| 灵宝市| 陆丰市|