Pandas DataFrame中loc()和iloc()的区别

  • Post category:Python

当你在处理Pandas DataFrame时,你有两种方式来选择其中的数据——loc()和iloc()。

loc()

loc()是通过标签来查询和选择数据的。例如,在以下示例数据框中,我们将展示如何通过标签选择整行或整列。注意,标签可以是字符串或数字。

import pandas as pd

data = {'name': ['John', 'Mary', 'Paul', 'Angela', 'Tom'],
        'age': [23, 41, 32, 28, 19],
        'country': ['USA', 'UK', 'Canada', 'Germany', 'Japan']}
df = pd.DataFrame(data)

# 选择整列
df.loc[:, 'name']

# 选择第三行
df.loc[2, :]

# 选择行和列的子集
df.loc[1:3, ['name', 'age']]

iloc()

iloc()是使用数字索引选择数据框中的行和列。在以下示例中,我们将展示如何通过数字选择行和列。

import pandas as pd

data = {'name': ['John', 'Mary', 'Paul', 'Angela', 'Tom'],
        'age': [23, 41, 32, 28, 19],
        'country': ['USA', 'UK', 'Canada', 'Germany', 'Japan']}
df = pd.DataFrame(data)

# 选择整列
df.iloc[:, 0]

# 选择第三行
df.iloc[2, :]

# 选择行和列的子集
df.iloc[1:4, 0:2]

值得注意的是,当我们使用iloc()方法选择行和列时,必须使用数字进行索引。loc()方法允许使用字符串或数字,但iloc()只能使用数字。

另外,需要注意的是,当我们使用loc()和iloc()来选择行和列时,它们还可以在同一个操作中使用。例如,我们可以在第一维度使用iloc()来选择行,在第二维度使用loc()来选择列。

import pandas as pd

data = {'name': ['John', 'Mary', 'Paul', 'Angela', 'Tom'],
        'age': [23, 41, 32, 28, 19],
        'country': ['USA', 'UK', 'Canada', 'Germany', 'Japan']}
df = pd.DataFrame(data)

# 选择第2~4行的name列
df.iloc[1:4, :].loc[:, 'name']

可以看出,loc()和iloc()的区别在于,loc()使用标签或条件来选择数据,而iloc()使用了整数位置来选择数据。