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
网友评论