在 Python 的 Pandas 库中,loc 和 iloc 是用于选择 DataFrame 或 Series 数据的两种常用索引方法。它们功能类似,但有重要的区别。
先创建一个Dataframe
import pandas as pd
# 创建 DataFrame
data = {'A': [1, 2, 3], 'B': [4, 5, 6], 'C': [7, 8, 9]}
df = pd.DataFrame(data, index=['x', 'y', 'z'])
loc:通过显式名称访问
获取行数据
- 行列均是通过显式名称访问。
- 行和列标签可以是字符串、数字(如果是索引值)、布尔条件等。
- 选择范围是闭区间。
df.loc['x']
df.loc['y']
df.loc['x','A']
df.loc['z','B']
切片
df.loc[1:2]
报错
df.loc['x':'y']
df.loc['x':'y','A':'B']
df.loc['x':'y',['A','C']]
df.loc[:'y','B':]
df.loc[df['A']==2,'B']#求A的值是2的元素对应的B值是多少
df.loc[df['B']>4,'C']
插入一道题目:
编写一个解决方案,选择 student_id = 101 的学生的 name 和 age 并输出。
返回结果格式如下示例所示。
import pandas as pd
def selectData(students: pd.DataFrame) -> pd.DataFrame:
return students.loc[students["student_id"]==101,['name','age']]
iloc:基于位置的索引方式访问
取行
df.iloc[0]#第一行
df.iloc[1]#第二行
df.iloc[2]#第三行
取列
df.iloc[:,0]#第一列
df.iloc[:,1]#第二列
df.iloc[:,2]#第三列
切片
df.iloc[:2,:]#切片
df.iloc[:,:2]#切片
df.iloc[1:,:2]#切片
总结
主要区别
小技巧
- 使用 loc 进行条件筛选或基于列名的选择。
- 使用 iloc 处理未知列名的情况,特别是当你仅知道数据的结构时。