python选取特定列 pandas iloc,loc,icol的使用详解(列切片及行切片)

  • Post category:Python

本文将详细讲解 pandas 库中选取特定列的三种常用方法 iloc/loc/icol。这三种方法用于选取 DataFrameSeries 中的列数据,并支持对行切片。本文还将通过示例说明这三个方法的使用。

1. iloc 的用法

iloc 可以根据列的位置来选取数据。它的语法为:

df.iloc[:, columns]

其中,columns 参数可以是单个列的位置或者列位置的列表/切片。

下面是一个示例:

import pandas as pd

df = pd.read_csv('data.csv')

# 取第一列
col1 = df.iloc[:, 0]

# 取第 1 至 3 列
cols_1to3 = df.iloc[:, 0:3]

# 取第 2 条数据的第 1 到第 3 列
data_1_row_2_1to3 = df.iloc[1, 0:3]

此处我们首先使用 pandas 库读取了用户名单数据,然后使用 iloc 选取了第一列。接着我们使用 iloc 进行了列切片,选取了第 1 至 3 列的数据。最后,我们还使用 iloc 进行了行列切片,选取了第 2 条数据的第 1 到第 3 列的数据。

2. loc 的用法

loc 可以根据列的标签名来选取数据。它的语法为:

df.loc[:, columns]

其中,columns 参数可以是单个列的列标签或者列标签的列表/切片。

下面是一个示例:

import pandas as pd

df = pd.read_csv('data.csv')

# 取 username,gender 和 age 三列的数据
cols_username_gender_age = df.loc[:, ['username', 'gender', 'age']]

# 取第 2 条到第 5 条数据的“username”和“age”两列
rows_2to5_username_age = df.loc[1:4, ['username', 'age']]

此处我们使用 pandas 库读取用户名单数据,然后使用 loc 方法选取了“username”、“gender”和“age”这三列的数据。接着我们使用了行列切片,选取了第 2 条到第 5 条数据的“username”和“age”这两列的数据。

3. icol 的用法

icol 可以根据列的位置来选取数据,但它已经被推荐修改为使用 iloc 方法。因此,当需要根据列的位置来选取数据时,建议使用 iloc

df.iloc[:, columns]

总体来说,iloc/loc/icol 方法可以让我们按照位置或标签选取特定的列,且支持对数据的行进行切片,是数据分析必备的基本技能之一。