Pandas中同时使用loc和iloc

Pandas中同时使用loc和iloc

在本文中,我们将介绍在Pandas中同时使用loc和iloc定位数据的方法以及适合使用它们的场合。Pandas是Python中一个重要的数据分析和操作工具,loc和iloc是其中两个最重要的方法之一。

阅读更多:Pandas 教程

loc和iloc方法的介绍

  • loc:通过行标签/列标签进行访问
  • iloc:通过行/列的位置(从0开始)进行访问

我们先来看一下loc方法。它可以通过DataFrame对象中的行标签/列标签进行单个访问,格式如下:

df.loc[row_indexer,column_indexer]

其中,row_indexer可以是以下情况之一:

  • 单个标签
  • 标签列表或数组
  • 切片对象
  • 布尔数组

而column_indexer可以是以上同样的情况(注意:此处行标签/列标签都要使用完整的标签,不能使用切片等方式)。举个例子:

import pandas as pd
df = pd.DataFrame({'A':[1,2,3],'B':[4,5,6],'C':[7,8,9]},index=list('abc'))
print(df.loc['a',['B','C']])

输出结果:

B    4
C    7
Name: a, dtype: int64

iloc方法基本和loc一样,只是使用的是行/列位置(从0开始)。举个例子:

import pandas as pd
df = pd.DataFrame({'A':[1,2,3],'B':[4,5,6],'C':[7,8,9]},index=list('abc'))
print(df.iloc[0,[1,2]])

输出结果:

B    4
C    7
Name: a, dtype: int64

以上就是loc和iloc最基本的用法。现在我们来看看如何在代码中同时使用这两个方法。

使用loc和iloc定位数据

使用loc和iloc方法可以访问DataFrame、Series对象中的行/列数据,而我们在实际操作中理论上可以使用其中的任意一个方法定位数据。接下来我们将具体介绍如何在操作中同时使用它们。

按标签/位置访问行/列

如果我们想要通过行标签和列标签同时访问一些行/列的数据,我们可以使用如下方法:

df.loc[row_indexer,column_indexer].iloc[row_indexer2,column_indexer2]

这里需要注意的是,第一个方括号内的行/列标签使用loc访问,而第二个方括号内的位置则使用iloc方法访问。

下面我们来举一个例子。首先我们建立一个DataFrame:

import pandas as pd
import numpy as np

df = pd.DataFrame(np.arange(6).reshape(3, 2), index=['a', 'b', 'c'], columns=['I', 'II'])
print(df)

输出结果:

   I  II
a  0   1
b  2   3
c  4   5

接下来我们来选择其中的数据:

print(df.loc[['a', 'b'], :].iloc[:, [1]])

这里我们使用loc索引行标签为a,b的行,iloc索引第二列,输出结果:

   II
a   1
b   3

按位置访问行/列

类似的,如果我们想要按位置访问行/列的数据,可以使用如下方法:

df.iloc[row_indexer,column_indexer].loc[row_indexer2,column_indexer2]

这里我们使用了iloc方法访问行/列位置,再使用loc方法访问某些行/列的标签。这种方法可以解决一些难以用loc或iloc单独访问的数据。

还是举个例子,我们随便造一个DataFrame:

import pandas as pd
import numpydf = pd.DataFrame(np.arange(12).reshape(4, 3), index=[1, 2, 4, 7], columns=['A', 'B', 'C'])
print(df)

输出结果:

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

我们可以使用如下代码来访问其第二和第四行,并且只选择其第一列和第二列:

print(df.iloc[[1, 3], :].loc[:, ['A', 'B']])

输出结果:

   A   B
2  3   4
7  9  10

我们使用iloc方法选择第二和第四行,再使用loc方法选择第一和第二列。

适合使用loc和iloc的场合

loc和iloc方法各有其适用的场合:

  • 使用loc:如果我们需要访问某一范围内的数据,建议使用loc方法,因为loc方法比iloc更容易理解,同时也更灵活。
  • 使用iloc:当我们需要访问某些具体的数据而不是范围内的数据时,建议使用iloc方法,因为iloc方法比loc更快。

当然,如果一个任务非常简单,两种方法都可以。

总结

本文介绍了在Pandas中同时使用loc和iloc方法,以及适合使用它们的场合。通过本文我们学习了如何在代码中同时使用这两个方法,以及如何按标签/位置访问行/列,按位置访问行/列。同时,我们也了解到,当我们需要访问某一范围内的数据时建议使用loc方法,而需要访问某些具体的数据而不是范围内的数据时建议使用iloc方法。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程