Pandas DataFrame查询详解:loc, iloc, at, iat, ix

6 下载量 81 浏览量 更新于2024-08-31 1 收藏 59KB PDF 举报
在Pandas库中,DataFrame是核心数据结构之一,用于存储二维表格型数据。查询和操作DataFrame数据是非常常见的任务。本文将深入探讨DataFrame的查询方法,包括`[]`、`loc`、`iloc`、`at`、`iat`以及已弃用的`ix`。 首先,我们来看`[]`切片方法。它是最基础的查询方式,可以用于选择行或列。例如,当使用`[]`并提供一个整数范围时,如`data[1:5]`,它会选择DataFrame中从第1行到第5行(不包含第5行)的所有列。如果`[]`内传入的是列名的列表,如`data[['rnd_1','rnd_3']]`,则会选择指定的列,这里选择了`rnd_1`和`rnd_3`两列。 接下来是`loc`方法。`loc`主要用于基于标签的索引,这意味着它使用行和列的显式标签(例如,字符串或日期)来选择数据。例如,`data.loc[1:5, 'rnd_1':'rnd_3']`会选择从第1行到第5行(包含第5行),并且包括`'rnd_1'`、`'rnd_2'`和`'rnd_3'`列的数据。`loc`支持布尔索引,这意味着你可以传递一个与DataFrame大小相同的布尔数组来选取满足条件的行,如`data.loc[data['rnd_1'] > 10]`。 然后是`iloc`方法。与`loc`不同,`iloc`是基于位置的索引,它使用整数索引来选取数据。例如,`data.iloc[1:5, 0:3]`会选取从第1行到第5行(不包含第5行)以及前3列的数据。同样,`iloc`也支持切片操作,但这里的索引是对实际的行和列位置,而不是标签。 `at`和`iat`是用来快速访问单个值的方法。`at`根据标签定位,`iat`根据位置定位。例如,`data.at[1, 'rnd_1']`会返回第1行`'rnd_1'`列的值,而`data.iat[1, 0]`则会返回第1行第0列的值(注意,这里的索引是从0开始的)。 最后,虽然已经不再推荐使用,但提及一下`ix`也是有必要的。`ix`结合了标签和位置索引,但在Pandas 0.20.0版本后被弃用,因为它可能会导致混淆和性能问题。如果同时知道标签和位置,可以使用`loc`和`iloc`来代替。 在处理大型数据集时,理解并熟练掌握这些查询方法至关重要,它们可以帮助你高效地提取、过滤和操作DataFrame中的数据。了解每种方法的特性和适用场景,能够帮助你编写出更加简洁和高效的代码。在实践中,结合使用这些方法可以实现复杂的查询需求,提高数据分析的效率。