Pandas iloc和loc有哪些不同

Pandas iloc和loc有哪些不同

在本文中,我们将介绍 Pandas 中的 iloc 和 loc,并探讨它们之间的区别。

阅读更多:Pandas 教程

Pandas 的 iloc 和 loc

Pandas 中,iloc 和 loc 都是用于选取 DataFrame 中的数据的方法。

iloc(即“integer location”)使用整数位置来选取数据,与 Python 的下标系统类似,但也可以支持切片操作。

loc(即“label location”)使用索引标签或者列名来选取数据,而不是整数位置。

举例来说,假设有如下的 DataFrame:

    A   B   C
0   1   2   3
1   4   5   6
2   7   8   9
Python

使用 iloc 和 loc 分别选取第二行数据的方法如下:

# 使用 iloc
df.iloc[1]

# 使用 loc
df.loc[1]
Python

可以看到,iloc 返回第二行的数据,而 loc 返回第一行的数据。

iloc 和 loc 的区别

虽然 iloc 和 loc 都可以用来选取 DataFrame 中的数据,它们之间有几个关键的区别:

1. 参数类型不同

iloc 接受整数、整数列表和整数范围作为参数,而 loc 接受标签和标签列表作为参数。

举个例子:

# 使用 iloc
df.iloc[1] # 返回第二行的数据
df.iloc[[0, 2]] # 返回第一行和第三行的数据
df.iloc[1:3] # 返回第二行和第三行的数据

# 使用 loc
df.loc[1] # 返回第一行的数据
df.loc[[0, 2]] # 返回第一行和第三行的数据
df.loc[1:3] # 返回第一行和第三行的数据
Python

可以看到,iloc 使用整数位置来选取数据,而 loc 使用标签或者列名来选取数据。

2. 切片方式不同

iloc 和 Python 中的切片方式类似,它可以使用类似于 [start:stop:step] 这样的切片方式来选取数据。

而 loc 不能使用这种切片方法,它只能使用类似于 start, stop, step 这样的方式来选取数据。

举个例子:

# 使用 iloc
df.iloc[:, 0] # 返回所有行的第一列数据
df.iloc[:, 0:2] # 返回所有行的第一列和第二列数据
df.iloc[::2] # 返回间隔一行的数据

# 使用 loc
df.loc[:, 'A'] # 返回所有行的第一列数据
df.loc[:, ['A', 'B']] # 返回所有行的第一列和第二列数据
df.loc[::2] # 返回间隔一行的数据
Python

可以看到,iloc 可以使用切片方式来选取数据,而 loc 不能使用这种切片方式。

3. 处理缺失数据的方式不同

当选取到缺失数据的时候,iloc 和 loc 会有不同的处理方式。

如果使用 iloc 选取到缺失数据的话,会返回一个 nan 值,表示数据缺失。而如果使用 loc 选取到缺失数据的话,会报错。

举个例子:

# 使用 iloc
df.iloc[3] # 返回 nan

# 使用 loc
df.loc[3] # 报错:KeyError: 3
Python

可以看到,使用 iloc 选取到缺失数据的话,会返回一个 nan 值,而使用 loc 则会报错。

总结

在 Pandas 中,iloc 和 loc 都是用于选取 DataFrame 中的数据的方法,但它们之间有一些关键的区别。iloc 使用整数位置来选取数据,而 loc 使用标签或者列名来选取数据。iloc 可以使用切片方式来选取数据,而 loc 不能使用这种切片方式。当选取到缺失数据的时候,iloc 会返回一个 nan 值,而 loc 则会报错。

因此,在使用 iloc 和 loc 时,需要根据具体情况来选择合适的方法,以便正确选取需要的数据。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

登录

注册