pandas中loc、iloc和ix的具体含义是什么
时间: 2024-05-31 15:09:23 浏览: 231
在pandas库中,loc、iloc和ix都是用来选择数据的方法。
1. loc是通过标签来选择数据的方法,即根据行标签和列标签进行数据选择。它的语法是:df.loc[row_indexer,column_indexer],其中row_indexer可以是单个行标签或行标签的列表,column_indexer可以是单个列标签或列标签的列表。
2. iloc是通过位置来选择数据的方法,即根据行号和列号进行数据选择。它的语法是:df.iloc[row_indexer,column_indexer],其中row_indexer可以是单个行号或行号的列表,column_indexer可以是单个列号或列号的列表。
3. ix方法是loc、iloc的混合体,它可以通过标签或位置来选择数据。如果ix的索引器是整数,那么就按照位置选择数据;如果索引器是标签,那么就按照标签选择数据。但是,由于ix方法无法确定用户想要通过标签还是位置来选择数据,因此在pandas 1.0.0版本中已经被弃用了。
通常情况下,推荐使用loc和iloc方法来进行数据选择,因为它们更加明确和清晰。
相关问题
详解pandas dataframe的查询方法(loc,iloc,at,iat,ix的用法和区别
pandas是一个强大的数据分析工具,在数据处理过程中,我们经常需要对DataFrame进行查询操作。Pandas提供了多种查询方法,包括loc、iloc、at、iat和ix。以下是对这些方法的详细解释和区别。
1. loc:loc是通过行标签和列标签进行查询的方法。例如,可以使用df.loc[row_index, column_name]的方式来查询DataFrame的特定值或行列的子集。其中row_index可以是单个索引、索引列表或布尔数组,column_name可以是单个列名或列名列表。loc方法返回的是一个新的DataFrame或Series对象,以便进行进一步的操作。
2. iloc:iloc是通过行索引和列索引进行查询的方法。它与loc的用法类似,但是不是使用标签,而是使用整数位置来定位数据。例如,可以使用df.iloc[row_index, column_index]的方式来查询DataFrame的特定值或行列的子集。同样地,iloc方法返回的也是一个新的DataFrame或Series对象。
3. at:at用于直接查询DataFrame中的单个元素,它使用行标签和列标签来定位。例如,可以使用df.at[row_label, column_label]的方式来获取特定位置的值。与loc方法相比,at方法更快,并且只返回标量值。
4. iat:iat用于通过整数位置来查询DataFrame中的单个元素。可以使用df.iat[row_index, column_index]的方式来获取特定位置的值。iat方法与at方法的区别与iloc与loc的区别相似。
5. ix:在旧版本的pandas中,ix方法用于混合标签和整数位置的查询。它可以使用标签或整数位置来定位数据,但是由于存在一些歧义和性能问题,自从pandas 0.20版本后,被推荐使用loc和iloc方法来替代ix方法。
总的来说,loc和at是通过标签进行查询的方法,iloc和iat是通过整数位置进行查询的方法。同时,loc和iloc返回的是一个新的DataFrame或Series对象,而at和iat只返回标量值。在实际使用中,根据需要选择不同的查询方法。
python ix,iloc和loc
### Pandas 中 `ix`、`iloc` 和 `loc` 的区别及用法
#### 1. `loc`
`loc` 是基于标签的索引器,主要用于通过行和列的标签访问数据。对于具有自定义索引的数据框来说非常有用。
```python
import pandas as pd
import numpy as np
data = pd.DataFrame(
np.random.randint(100, size=(10, 10)),
columns=['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j'],
index=['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J']
)
# 使用 loc 访问特定行列组合
print(data.loc['A':'C', ['a', 'b']])
```
此代码片段展示了如何利用 `loc` 来选取从 A 到 C 行以及 a 和 b 这两列的内容[^3]。
#### 2. `iloc`
与 `loc` 不同的是,`iloc` 主要用于整数位置上的索引,即它依据数组的位置而非标签来进行定位。
```python
# 使用 iloc 获取前五行前三列的数据
print(data.iloc[:5, :3])
```
这段代码说明了怎样运用 `iloc` 提取位于 DataFrame 前五条记录中的头三个字段的信息。
#### 3. `ix`
需要注意的是,在较新的版本中已经不推荐使用 `ix` 属性,并且在未来可能会被移除。这是因为其行为有时会让人感到困惑,因为它既支持按位又支持按名索引的方式。因此建议优先考虑使用更明确的 `loc` 或者 `iloc` 方法代替之[^4]。
为了更好地理解这三种索引机制之间的差异:
- 当确切知道想要获取哪几行/列的名字时应该选用 `loc`;
- 如果是按照数值下标来指定范围,则应采用 `iloc`.
- 对于混合模式的需求场景(已废弃),过去曾有 `ix` 可供选择但现在不再提倡使用.
阅读全文
相关推荐












