详解pandas中iloc, loc和ix的区别和联系

1. 前言

在pandas中,iloc、loc和ix都是用于选取数据的方法,它们能够根据位置或者标签来选择数据,但是它们之间仍然存在很多区别和联系。

2. iloc方法

2.1 iloc选取数据

iloc是通过行号和列号来选取数据的,其基本语法是df.iloc[行位置,列位置],其中行位置和列位置从0开始计算。

import pandas as pd

import numpy as np

data=np.array([[1,2,3],

[4,5,6],

[7,8,9]])

df=pd.DataFrame(data,index=[0,1,2],columns=['a','b','c'])

print(df.iloc[1,2]) # 输出6

此时选择的是第2行第3列的数据,也就是DataFrame中的6元素。

2.2 iloc切片选取数据

iloc还支持对行和列进行切片,其基本语法是df.iloc[行切片,列切片]

import pandas as pd

import numpy as np

data=np.array([[1,2,3],

[4,5,6],

[7,8,9]])

df=pd.DataFrame(data,index=[0,1,2],columns=['a','b','c'])

print(df.iloc[1:,1:]) # 输出5,6,8,9

在这个例子中,选择的是第2,3行和第2,3列的数据。

3. loc方法

3.1 loc选取数据

loc是通过行标签和列标签来选取数据的,其基本语法是df.loc[行标签,列标签]

import pandas as pd

import numpy as np

data=np.array([[1,2,3],

[4,5,6],

[7,8,9]])

df=pd.DataFrame(data,index=['a','b','c'],columns=['A','B','C'])

print(df.loc['a','B']) # 输出2

这里选择的是行标签为a,列标签为B的数据。

3.2 loc切片选取数据

loc同样支持对行和列进行切片,但是它使用的是标签,因此需要在切片上进行包含。

import pandas as pd

import numpy as np

data=np.array([[1,2,3],

[4,5,6],

[7,8,9]])

df=pd.DataFrame(data,index=['a','b','c'],columns=['A','B','C'])

print(df.loc['b':,'B':]) # 输出5,6,8,9

在这个例子中,选择的是行标签为b到最后,列标签为B到最后的数据。

4. ix方法

4.1 ix选取数据

ix方法是上述两种方法的混合体,它既可以通过标签选取数据,也可以通过位置选取数据,其基本语法是df.ix[行位置或标签,列位置或标签]

import pandas as pd

import numpy as np

data=np.array([[1,2,3],

[4,5,6],

[7,8,9]])

df=pd.DataFrame(data,index=['a','b','c'],columns=['A','B','C'])

print(df.ix['a',1]) # 输出2

这里选择的是行标签为a,列位置为1的数据。

4.2 ix切片选取数据

ix同样支持对行和列进行切片,但是要使用基于标签的切片。

import pandas as pd

import numpy as np

data=np.array([[1,2,3],

[4,5,6],

[7,8,9]])

df=pd.DataFrame(data,index=['a','b','c'],columns=['A','B','C'])

print(df.ix[1:,'B':]) # 输出5,6,8,9

这里选择的是第2行到最后一行,列标签为B到最后的数据。

5. 区别和联系

5.1 区别

iloc是基于行和列的数字索引进行数据选取的,loc是基于行和列的标签进行数据选取的,而ix是同时支持数字索引和标签索引的。

另外,iloc和loc的切片都是使用基于数字的切片,而ix则支持基于数字和标签的切片。

5.2 联系

iloc、loc和ix都是用于数据选择的方法,在选取数据时都支持对行和列进行切片,其区别主要在选取数据的方式上有所不同。

此外,他们还有着一些相似的方法,比如在DataFrame中以字典形式将一行或一列赋值。

import pandas as pd

import numpy as np

data=np.array([[1,2,3],

[4,5,6],

[7,8,9]])

df=pd.DataFrame(data,index=['a','b','c'],columns=['A','B','C'])

df['D']=[10,20,30] # 给df添加一列

print(df)

df.loc['d']=[11,12,13,14] # 给df添加一行

print(df)

6. 总结

本文详细介绍了pandas中iloc、loc和ix三种数据选择方法的使用方法和区别,通过此篇文章的讲解,相信大家已经能够熟练掌握这三种方法,更加深入地理解和使用pandas。

后端开发标签