对pandas通过索引提取dataframe的行方法详解

  • Post category:Python

对pandas通过索引提取dataframe的行可以使用.loc[]和.iloc[]方法,这两种方法的主要区别是.loc[]方法是通过行标签和列标签进行索引,而.iloc[]方法则是通过行索引和列索引进行索引。

使用.loc[]方法

.loc[]方法通过标签索引行数据。这里的标签可以是行和列的标签,使用.loc[]方法时需要提供如下信息:

  1. 想要获取的行的标签,可以是单个标签、多个标签、标签的列表或者切片对象。
  2. 想要获取的列的标签,可以是单个标签、多个标签、标签的列表或者切片对象。
  3. 想要获取的数据类型,可以是单个数据类型、多个数据类型、数据类型的列表或者切片对象。

假设我们有如下数据,是一个记录国家GDP的Dataframe:

        country     GDP
0          中国    14.14
1          美国    21.43
2          日本     4.91
3          德国     3.84
4          英国     2.62
5        法国[2]     2.58
6         意大利     1.94
7         巴西[3]     2.05
8          加拿大    1.65
9        俄罗斯[4]    1.64

我们可以使用.loc[]方法从数据中提取出特定的行,比如:

import pandas as pd

# 创建Dataframe
data = {'country': ['中国', '美国', '日本', '德国', '英国', '法国[2]', '意大利', '巴西[3]', '加拿大', '俄罗斯[4]'],
        'GDP': [14.14, 21.43, 4.91, 3.84, 2.62, 2.58, 1.94, 2.05, 1.65, 1.64]}
df = pd.DataFrame(data)

# 获取指定标签的行和列数据
print(df.loc[[1, 3, 5], ['country', 'GDP']])

输出结果是:

  country    GDP
1      美国  21.43
3      德国   3.84
5  法国[2]   2.58

使用.iloc[]方法

.iloc[]方法是通过行和列的位置进行索引,使用时需要提供行和列的位置。假设我们有如下数据:

       A     B  C
one    1     2  3
two    4     5  6
three  7     8  9

我们可以使用.iloc[]方法来提取行数据,如下所示:

import pandas as pd

# 创建Dataframe
data = {'A': [1, 4, 7],
        'B': [2, 5, 8],
        'C': [3, 6, 9]}
df = pd.DataFrame(data, index=['one', 'two', 'three'])

# 使用iloc方法获取行和列数据
print(df.iloc[[0, 2], [1, 2]])

输出结果是:

       B  C
one    2  3
three  8  9

在上面的示例中,我们使用.iloc[]方法获取了第一行和第三行,第二列和第三列的数据。

总之,无论是使用.loc[]还是.iloc[]方法,都可以方便地提取pandas中的行数据,并且这两种方法都支持使用标签和位置对行进行索引。