python之loc與iloc的用法及說明
更新時間:2025年06月27日 09:02:06 作者:我不是少爺.
這篇文章主要介紹了python之loc與iloc的用法及說明,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
loc 是 Pandas 中用于 基于標簽(label-based)的索引選擇方法,專門用于按行/列標簽精準定位和操作 DataFrame 或 Series 中的數(shù)據(jù)。
以下是詳細解析:
一、核心功能
1. 基本語法
df.loc[行標簽選擇, 列標簽選擇]
- 行標簽選擇:可以是單個標簽、標簽列表、切片(如
"a":"d")或布爾條件 - 列標簽選擇:同上,支持標簽篩選
2. 特性
- 標簽優(yōu)先:索引基于行/列的名稱(字符串或數(shù)字標簽),而非位置
- 閉區(qū)間:切片包含起始和結束標簽(與 Python 常規(guī)切片不同)
- 支持高級操作:布爾索引、條件過濾、函數(shù)調(diào)用等
二、典型使用場景
1. 精確提取單值
# 獲取行標簽為2,列標簽為'Age'的值 df.loc[2, 'Age']
2. 選擇行范圍 + 多列
# 選取行標簽從'user1'到'user3',列標簽'Name'和'Score' df.loc['user1':'user3', ['Name', 'Score']]
3. 條件篩選
# 選擇所有年齡大于30的行,并顯示'City'列 df.loc[df['Age'] > 30, 'City']
4. 修改數(shù)據(jù)
# 將行標簽為5的'Status'列值改為'active' df.loc[5, 'Status'] = 'active'
三、與 iloc 的對比
| 特性 | loc | iloc |
|---|---|---|
| 索引類型 | 標簽(字符串或數(shù)字) | 純整數(shù)位置(0-based) |
| 切片區(qū)間 | 閉區(qū)間(包含兩端) | 左閉右開(Python 標準切片) |
| 允許輸入類型 | 標簽、布爾數(shù)組、條件表達式 | 整數(shù)、整數(shù)列表、整數(shù)切片 |
| 示例 | df.loc['a':'c', 'Name'] | df.iloc[0:3, 1] |
四、避坑指南
1. 避免鏈式賦值
# ? 可能引發(fā) SettingWithCopyWarning df['Age'][df['Name'] == 'Alice'] = 25 # ? 規(guī)范寫法 df.loc[df['Name'] == 'Alice', 'Age'] = 25
2. 處理混合索引
當 DataFrame 的索引是整數(shù)時,loc 和 iloc 可能產(chǎn)生歧義:
df = pd.DataFrame({'A': [1,2,3]}, index=[10, 20, 30])
# 按標簽選擇(查找標簽為1的行)
df.loc[10] # ? 返回第10標簽行
# 按位置選擇(查找第0行)
df.iloc[0] # ? 返回第10標簽行(位置0)
五、高級用法示例
1. 使用函數(shù)篩選
# 選擇索引以'2023'開頭的行
df.loc[lambda x: x.index.str.startswith('2023')]
2. 多條件復合篩選
# 選擇年齡在20-30歲且城市為北京的行 df.loc[(df['Age'] >= 20) & (df['City'] == '北京')]
3. 跨列計算賦值
# 當Score列大于90時,Status設為'A+' df.loc[df['Score'] > 90, 'Status'] = 'A+'
六、總結
- 核心作用:基于標簽精準操作數(shù)據(jù)(查、改、刪)
- 優(yōu)勢:代碼可讀性高,支持復雜條件篩選
- 適用場景:數(shù)據(jù)清洗、條件篩選、動態(tài)計算等
# 典型工作流示例 cleaned_data = df.loc[df['Quality'] > 0.8, ['ID', 'Value']] # 篩選高質(zhì)量數(shù)據(jù) cleaned_data.loc[:, 'Value'] *= 100 # 批量修改選中列的值
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
python itchat實現(xiàn)調(diào)用微信接口的第三方模塊方法
這篇文章主要介紹了python itchat實現(xiàn)調(diào)用微信接口的第三方模塊方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2019-06-06
Python動態(tài)配置管理Dynaconf的實現(xiàn)示例詳解
這篇文章主要為大家介紹了Python動態(tài)配置管理Dynaconf實現(xiàn)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-07-07
Python基于opencv實現(xiàn)的人臉識別(適合初學者)
OpenCV是一個基于BSD許可開源發(fā)行的跨平臺計算機視覺庫,下面這篇文章主要給大家介紹了關于Python基于opencv實現(xiàn)的人臉識別,文中通過實例代碼介紹的非常詳細,本文的教程非常適合初學者,需要的朋友可以參考下2022-03-03

