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。