ix、iloc、loc

2019-06-09
1、#loc通过标签索引数据,即通过index和column的值进行索引。
2、#iloc通过行号选取数据,即通过数据所在的自然行列书为选取数据。

#示例数据集
>>> df1 = pd.DataFrame(np.arange(12).reshape(4,3),columns=list('abc'),index=list('defg'))
>>> df1
   a   b   c
d  0   1   2
e  3   4   5
f  6   7   8
g  9  10  11

#索引行
#loc
>>> df1.loc[['d']]
   a  b  c
d  0  1  2
#iloc:
>>> df1.iloc[[0]]
   a  b  c
d  0  1  2

#索引多行
#loc:
>>> df1.loc[['d','e']]
   a  b  c
d  0  1  2
e  3  4  5
#iloc:
>>> df1.iloc[[0,1]]
   a  b  c
d  0  1  2
e  3  4  5
>>> df1.iloc[0:2]
   a  b  c
d  0  1  2
e  3  4  5

#索引列
#loc:
>>> df1.loc[:,['a']]
   a
d  0
e  3
f  6
g  9
#iloc:
>>> df1.iloc[:,[0]]
   a 
d  0
e  3
f  6
g  9

#索引多列
#loc:
>>> df1.loc[:,['a','c']]
   a   c
d  0   2
e  3   5
f  6   8
g  9  11
>>> df1.loc[:,:'b']
   a   b
d  0   1
e  3   4
f  6   7
g  9  10
#iloc:
>>> df1.iloc[:,:2]#右边的不含在内
   a   b
d  0   1
e  3   4
f  6   7
g  9  10
#索引所有列
>>> df1.loc[:,:]
   a   b   c
d  0   1   2
e  3   4   5
f  6   7   8
g  9  10  11

利用loc函数,根据某个数据来提取数据所在行

#a列中数据为3所在的行数据,如果取某行中数据为X所在的列数据会报错。
>>> df1.loc[df1['a']==3]
   a  b  c
e  3  4  5

pandas通过loc生成新的列
df.loc[条件,新增列名]=赋初始值

>>> data =pd.DataFrame(np.random.randint(0,50,20).reshape(5,4),columns=list('abcd'))
>>> data
    a   b   c   d
0  10  31  44  44
1  34  24  41  45
2  30  36  34   4
3  44  27  10  49
4  43   3  24  27
>>> data.loc[data.d >= 30,'大于30']='Yes'
>>> data
    a   b   c   d 大于30
0  10  31  44  44  Yes
1  34  24  41  45  Yes
2  30  36  34   4  NaN
3  44  27  10  49  Yes
4  43   3  24  27  NaN

3、#混合索引,可以根据标签和行号索引数据。
但必须单独使用标签或者行号,不得同时使用,否则报错

4、at、iat,通过标签或者行号获某个位置的数据。

>>> df1
   a   b   c
d  0   1   2
e  3   4   5
f  6   7   8
g  9  10  11
#第d行a列的数据
>>> df1.at['d','a']  也可以用df1.loc['d','a']    
0
#第一行一列的数据
>>> df1.iat[0,0]
0

5、直接索引
行号和区间索引只用于行

>>> df1['d':'e']    #右边包含在内      
   a  b  c
d  0  1  2
e  3  4  5
>>> df1['d':'d']             
   a  b  c
d  0  1  2
>>> df1[0:1] #右边不包含在内        
   a  b  c
d  0  1  2
>>>df1[0]
。。。报错

选取列

>>> df1['a']
d    0
e    3
f    6
g    9
Name: a, dtype: int32
>>> df1.a #取a列,不能用这种方式选取行,会报错
d    0
e    3
f    6
g    9
Name: a, dtype: int32
#选取多列
>>> df1[['a','c']]
   a   c
d  0   2
e  3   5
f  6   8
g  9  11

你可能感兴趣的:(ix、iloc、loc)