pandas中的切片函数: .iloc()、.loc()、.ix() 的区别

文章目录

      • pandas中的切片函数:`.iloc()`、`.loc()`、`.ix()`
          • 1、首先创建一个DataFrame
      • iloc:通过行/列号选取数据
          • 1、 .iloc就是通过行/列号来选取数据,比如我们可以这样来选取第0行数据
          • 2、选取多行数据
          • 3、按照列号选取某列,如选取第二列
          • 4、按照行号选取某行某列,比如选取第0行第2列
          • 5、根据行号选取多行多列,比如选取第0-2行第0-2列
      • loc通过标签选取数据
          • 1、选取第1行数据
          • 2、按标签选取第b行
          • 3、按标签选取多行
          • 4、按标签选取某列
          • 5、按标签选取多列
          • 6、按标签选取某行某列
      • ix 简单粗暴 混合使用
          • 1、使用ix可以像iloc通过行号选取
          • 2、也可以像loc通过标签选取
          • 3、可以通过行号选取指定位置的数据
          • 4、可以通过标签选取指定位置的数据
          • 掌握了上面的方法我们就可以按照条件选取数据,比如通过单个条件选取数据
          • 1、也可以通过多个条件选取数据

pandas中的切片函数:.iloc().loc().ix()

1、首先创建一个DataFrame

In [3]:

import pandas as pd
data = {'a':[11,22,33,44],
       'b':['aa','bb','cc','dd'],
       'c':[9,8,7,6],
        'd':[1,2,3,4]
       }
df = pd.DataFrame(data)
df

Out[3]:

a b c d
0 11 aa 9 1
1 22 bb 8 2
2 33 cc 7 3
3 44 dd 6 4

iloc:通过行/列号选取数据

1、 .iloc就是通过行/列号来选取数据,比如我们可以这样来选取第0行数据

In [4]:

df.iloc[0]  #第一行

Out[4]:

a    11
b    aa
c     9
d     1
Name: 0, dtype: object
2、选取多行数据

In [20]:

df.iloc[0:3]  #取 0 - 2 行的数据

Out[20]:

a b c d
0 11 aa 9 1
1 22 bb 8 2
2 33 cc 7 3
3、按照列号选取某列,如选取第二列

In [21]:

df.iloc[:,[1]]  #第2列的所有行

Out[21]:

b
0 aa
1 bb
2 cc
3 dd
4、按照行号选取某行某列,比如选取第0行第2列

In [22]:

df.iloc[0:1,[1]]

Out[22]:

b
0 aa
5、根据行号选取多行多列,比如选取第0-2行第0-2列

In [23]:

df.iloc[0:2,[0,1]]

Out[23]:

a b
0 11 aa
1 22 bb

loc通过标签选取数据

.loc()函数是通过标签选取数据,如果搞不懂什么是标签什么是位置

pandas中的切片函数: .iloc()、.loc()、.ix() 的区别_第1张图片

1、选取第1行数据

In [26]:

df.iloc[0]  #选取第1行 因为第1行的行号是0所以和iloc效果相同

Out[26]:

a    11
b    aa
c     9
d     1
Name: 0, dtype: object

In [28]:

#再创建一个df1用于示例
data = {'a':[11,22,33,44],
       'b':['aa','bb','cc','dd'],
       'c':[9,8,7,6],
        'd':[1,2,3,4]
       }
df1 = pd.DataFrame(data,index = ['a','b','c','d'])
df1

Out[28]:

a b c d
a 11 aa 9 1
b 22 bb 8 2
c 33 cc 7 3
d 44 dd 6 4
2、按标签选取第b行

In [29]:

df1.loc['b']

Out[29]:

a    22
b    bb
c     8
d     2
Name: b, dtype: object
3、按标签选取多行

In [30]:

df1.loc['b':]

Out[30]:

a b c d
b 22 bb 8 2
c 33 cc 7 3
d 44 dd 6 4
4、按标签选取某列

In [31]:

df1.loc[:,['a']] #   :是所有行  a是第a列

Out[31]:

a
a 11
b 22
c 33
d 44
5、按标签选取多列

In [33]:

df1.loc[:,['a','b']]

Out[33]:

a b
a 11 aa
b 22 bb
c 33 cc
d 44 dd
6、按标签选取某行某列

In [34]:

df1.loc['a',['b','c']]  #a行的 第b,c 列元素

Out[34]:

b    aa
c     9
Name: a, dtype: object

ix 简单粗暴 混合使用

ix就是把iloc和loc语法综合了,爱用哪个用哪个,不过在有些版本的pandas中取消了ix函数,我们再看一下df

df
a b c d
0 11 aa 9 1
1 22 bb 8 2
2 33 cc 7 3
3 44 dd 6 4
1、使用ix可以像iloc通过行号选取
df.ix[1]
a    22
b    bb
c     8
d     2
Name: 1, dtype: object
2、也可以像loc通过标签选取
df1.ix['a']
a    11
b    aa
c     9
d     1
Name: a, dtype: object
3、可以通过行号选取指定位置的数据
df1.ix[3,3] #通过行号选取指定位置的数据
4
4、可以通过标签选取指定位置的数据
df1.ix['a','a']  #通过标签选取指定位置的数据
11
按照条件选取数据
掌握了上面的方法我们就可以按照条件选取数据,比如通过单个条件选取数据
df1.loc[df1['a']==11]
a b c d
a 11 aa 9 1
1、也可以通过多个条件选取数据
df1.loc[(df1['a']==11)&(df1['d']==1)]
a b c d
a 11 aa 9 1

你可能感兴趣的:(pandas中的切片函数: .iloc()、.loc()、.ix() 的区别)