.iloc
和 .loc
的基本用法
.iloc
- 用于通过位置(整数位置)来选择数据。
iloc
索引基于行和列的整数位置。
常用语法
data.iloc[i, j]
:选择第i
行第j
列的元素,若索引下标从0开始,对应的是第i+1
行第j+1
列的元素。data.iloc[i, :]
:选择第i
行的所有列,若索引下标从0开始,对应的是第i+1
行所有列的元素。data.iloc[:, j]
:选择所有行的第j
列,若索引下标从0开始,对应的是所有行第j+1
列的元素。data.iloc[i:j, k:l]
:==选择从第i
行到第j
行(不包括第j
行)和从第k
列到第l
列(不包括第l
列)的数据。左闭右开区间的选择,若索引下标从0开始,对应的是第i+1
行到第j+1
行(不包括第j+1
行)和从第k+1
列到第l+1
列(不包括第l+1
列)的数据
.loc
- 用于通过标签(行和列的标签名)来选择数据。
loc
索引基于行和列的标签。
常用语法:
data.loc[row_label, col_label]
:选择指定行标签和列标签的数据。data.loc[row_label, :]
:选择指定行标签的所有列。data.loc[:, col_label]
:选择所有行的指定列标签。data.loc[row_labels, col_labels]
:选择多个行标签和列标签的数据。
示例代码和解释
首先,创建一个示例 DataFrame:index表示的是行索引,columns是列索引
import pandas as pd
# 创建一个示例 DataFrame
data = pd.DataFrame({
'A': [1, 2, 3],
'B': [4, 5, 6],
'C': [7, 8, 9]
}, index=['row1', 'row2', 'row3'])
print(data)
输出:
A B C
row1 1 4 7
row2 2 5 8
row3 3 6 9
使用 .iloc
-
选择特定元素:索引下标都是从0开始
element = data.iloc[1, 2] print(element)
输出:
8
选择第二行第三列的元素(位置索引是从0开始的)。
-
选择特定行:
row_data = data.iloc[1, :] print(row_data)
输出:
A 2 B 5 C 8 Name: row2, dtype: int64
选择第二行的所有列数据。也就是第二行的所有数据
-
选择特定列:
col_data = data.iloc[:, 1] print(col_data)
输出:
row1 4 row2 5 row3 6 Name: B, dtype: int64
选择所有行的第二列数据。
-
选择行和列的范围:
subset = data.iloc[0:2, 1:3] print(subset)
输出:
B C row1 4 7 row2 5 8
选择第一行到第二行(不包括第三行)和第二列到第三列(不包括第四列)的数据。
使用 .loc
-
选择特定元素:
element = data.loc['row2', 'C'] print(element)
输出:
8
选择行标签为
row2
和列标签为C
的元素。 -
选择特定行:
row_data = data.loc['row2', :] print(row_data)
输出:
A 2 B 5 C 8 Name: row2, dtype: int64
选择行标签为
row2
的所有列数据。 -
选择特定列:
col_data = data.loc[:, 'B'] print(col_data)
输出:
row1 4 row2 5 row3 6 Name: B, dtype: int64
选择所有行的列标签为
B
的数据。 -
选择行和列的范围:
subset = data.loc['row1':'row2', 'B':'C'] print(subset)
输出:
B C row1 4 7 row2 5 8
选择从
row1
到row2
行(包括row2
)和从B
列到C
列的数据(包括C
)。
总结
.iloc
使用整数位置索引来选择数据,适合基于位置的操作。.loc
使用标签来选择数据,适合基于标签的操作。