在Pandas中,loc
和 iloc
都是用于数据选择的方法,它们是 DataFrame 和 Series 对象的索引选项。主要的区别在于它们索引数据的方式:
loc
是基于标签的索引,意味着它使用数据的标签信息来进行数据选择。loc
时,你可以得到的切片包括开始和结束标签。示例:
df.loc[0, 'column_name'] # 返回行索引为0,列名为'column_name'的单个元素
df.loc[0:5, 'column_name'] # 返回行索引从0到5(包括5),列名为'column_name'的切片
df.loc[df['column_name'] > 10, 'column_name'] # 布尔索引,返回'column_name'列中大于10的行
iloc
是基于位置的索引,意味着它使用整数索引来进行数据选择。iloc
在选择数据时不包括结束索引。示例:
df.iloc[0, 1] # 返回第0行第1列的单个元素(注意这里是基于0的索引)
df.iloc[0:5, 1] # 返回第0行到第4行(不包括第5行),第1列的切片
????????在实践中,loc
更适合当你知道具体的行标签或列名时使用,而 iloc
更适合你只知道行或列的位置索引时使用。在处理有具体行索引或列索引名的DataFrame时,通常更倾向于使用 loc
,因为它使代码更容易理解。当你需要基于位置进行纯粹的基于位置的索引时,比如选择第n行或第n列,不管它们的标签是什么,使用 iloc
更方便。需要注意的是,如果行标签恰好也是整数,这可能会导致一些混淆,因为 loc
和 iloc
可能会返回不同的结果。这时,清晰地知道何时使用基于标签的索引(loc
)和何时使用基于位置的索引(iloc
)非常重要。