精华内容
参与话题
问答
  • Pandas中loc和iloc函数用法详解(源码+实例)

    万次阅读 多人点赞 2018-08-04 15:55:40
    iloc函数:通过行号来取行数据(如取第二行的数据) 本文给出loc、iloc常见的五种用法,并附上详细代码。 1. 利用loc、iloc提取行数据 import numpy as np import pandas as pd #创建一个Dataframe data=pd....

    loc函数通过行索引 "Index" 中的具体值来取行数据(如取"Index"为"A"的行

    iloc函数通过行号来取行数据(如取第二行的数据

    本文给出loc、iloc常见的五种用法,并附上详细代码。

    1. 利用loc、iloc提取行数据

    import numpy as np
    import pandas as pd
    #创建一个Dataframe
    data=pd.DataFrame(np.arange(16).reshape(4,4),index=list('abcd'),columns=list('ABCD'))
    
    In[1]: data
    Out[1]: 
        A   B   C   D
    a   0   1   2   3
    b   4   5   6   7
    c   8   9  10  11
    d  12  13  14  15
    
    #取索引为'a'的行
    In[2]: data.loc['a']
    Out[2]:
    A    0
    B    1
    C    2
    D    3
    
    #取第一行数据,索引为'a'的行就是第一行,所以结果相同
    In[3]: data.iloc[0]
    Out[3]:
    A    0
    B    1
    C    2
    D    3

    2. 利用loc、iloc提取列数据

    In[4]:data.loc[:,['A']] #取'A'列所有行,多取几列格式为 data.loc[:,['A','B']]
    Out[4]: 
        A
    a   0
    b   4
    c   8
    d  12
    
    In[5]:data.iloc[:,[0]] #取第0列所有行,多取几列格式为 data.iloc[:,[0,1]]
    Out[5]: 
        A
    a   0
    b   4
    c   8
    d  12
    
    

    3.利用loc、iloc提取指定行、指定列数据

    In[6]:data.loc[['a','b'],['A','B']] #提取index为'a','b',列名为'A','B'中的数据
    Out[6]: 
       A  B
    a  0  1
    b  4  5
    
    In[7]:data.iloc[[0,1],[0,1]] #提取第0、1行,第0、1列中的数据
    Out[7]: 
       A  B
    a  0  1
    b  4  5

     

    4.利用loc、iloc提取所有数据

    In[8]:data.loc[:,:] #取A,B,C,D列的所有行
    Out[8]: 
        A   B   C   D
    a   0   1   2   3
    b   4   5   6   7
    c   8   9  10  11
    d  12  13  14  15
    
    In[9]:data.iloc[:,:] #取第0,1,2,3列的所有行
    Out[9]: 
        A   B   C   D
    a   0   1   2   3
    b   4   5   6   7
    c   8   9  10  11
    d  12  13  14  15

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

    In[10]: data.loc[data['A']==0] #提取data数据(筛选条件: A列中数字为0所在的行数据)
    Out[10]: 
       A  B  C  D
    a  0  1  2  3
    
    In[11]: data.loc[(data['A']==0)&(data['B']==2)] #提取data数据(多个筛选条件)
    Out[11]: 
       A  B  C  D
    a  0  1  2  3

    同时,以下几种写法也可提取数据所在的行,与第五种用法类似,仅作补充。

    In[12]: data[data['A']==0] #dataframe用法
    In[13]: data[data['A'].isin([0])] #isin函数
    In[14]: data[(data['A']==0)&(data['B']==2)] #dataframe用法
    In[15]: data[(data['A'].isin([0]))&(data['B'].isin([2]))] #isin函数
    
    Out[15]: 
       A  B  C  D
    a  0  1  2  3

    利用loc函数的时候,当index相同时,会将相同的Index全部提取出来,优点是:如果index是人名,数据框为所有人的数据,那么我可以将某个人的多条数据提取出来分析;缺点是:如果index不具有特定意义,而且重复,那么提取的数据需要进一步处理,可用.reset_index()函数重置index

    同样:at与iat函数可抽取指定行列的值,详情见博文DataFrame中at、iat函数详解

    最后:本博文中loc与iloc函数可提取指定行列数据,删除Dateframe指定行列数据可参考博主下列博文(点击跳转)

    展开全文
  • 假设df是一个dataframe,列名为A B C D 具体如下: A B C D 0 ss 小红 8 1 aa 小明 d 4 f f 6 ak 小紫 7 ...dataframe里的属性不是指定的,空值默认为NA。...一、选取标签为A和C的列,并且选完的对象类型还是dataframe...
    假设df是一个dataframe,列名为A B C D
    具体如下:
    
    A    B    C    D
    
    0    ss   小红  8
    1    aa   小明  d
    4    f         f
    6    ak   小紫  7
    dataframe里的属性不是指定的,空值默认为NA。
    一、选取标签为A和C的列,并且选完的对象类型还是dataframe
    
    df = df.loc[:, ['A', 'C']]
    df = df.iloc[:, [0, 2]]
    
    二、选取标签为C并且只取前两行,并且选完的对象类型还是dataframe
    
    df = df.loc[0:2, ['A', 'C']]
    df = df.iloc[0:2, [0, 2]] 
    
    聪明的朋友已经看出iloc和loc的不同了:loc是根据dataframe的具体标签选取列,而iloc是根据标签所在的位置,从0开始计数。",
    "前面的":"表示选取整列,第二个示例中的的0:2表示选取第0行到第二行,这里的0:2相当于[0,2)前闭后开,2是不在范围之内的。
    
    需要注意的是,如果是
    
    df = df.loc[0:2, ['A', 'C']]
    或者
    
    df = df.loc[0:2, ['A', 'C']]
    ,切片之后类型依旧是dataframe,不能直接进行加减乘除等操作的。
    比如dataframe的一列是数学成绩(shuxue),另一列为语文成绩(yuwen),现在需要求两门课程的总和,可以使用
    
    df['shuxue'] + df['yuwen'] # 选取完之后类型为series
    来获得总分,而不能使用
    
    df.iloc[:,[2]]+df.iloc[:,[1]]
    df.iloc[:,['shuxue']]+df.iloc[:,['yuwen']]
    ,这会产生错误结果。
    
    还有一种方式是使用df.icol(i)来选取列,选取完的也不是dataframe而是series,i为该列所在的位置,从0开始计数。
    
    如果你想要选取某一行的数据,可以使用df.loc[[i]]或者df.iloc[[i]]。
    
    展开全文
  • pandas iloc函数

    2019-09-23 16:09:32
    - pandas iloc函数 train.iloc[0:4] 0:4是选取0,1,2,3这四行,这里是前闭后开集合 train.iloc[:,:8] 选取位置为[0,8)列的整列数据 train.iloc[0:2,8] 选取位置为8的列的[0,2)行的数据 ` ...

    - pandas iloc函数

    train.iloc[0:4]

    0:4是选取0,1,2,3这四行,这里是前闭后开集合

    train.iloc[:,:8]

    选取位置为[0,8)列的整列数据

    train.iloc[0:2,8]

    选取位置为8的列的[0,2)行的数据

    `

    展开全文
  • The main issue is that dask does not support integer indexing so <code>iloc</code> actually has to evaluate the graph and load a whole column at a time into memory, we should probably warn about this...
  • Pandas——ix vs loc vs iloc区别

    万次阅读 多人点赞 2016-05-06 18:12:19
    Different Choices for Indexing 1. loc——通过行标签索引行数据 1.1loc[1]表示索引的是第1行(index 是整数) import pandas as pd data = [[1,2,3],[4,5,6]] ...df = pd.DataFrame(data=data, in...

    Different Choices for Indexing

    1. loc——通过行标签索引行数据

    1.1 loc[1]表示索引的是第1行(index 是整数)

     

    import pandas as pd
    data = [[1,2,3],[4,5,6]]
    index = [0,1]
    columns=['a','b','c']
    df = pd.DataFrame(data=data, index=index, columns=columns)
    print df.loc[1]
    '''
    a    4
    b    5
    c    6
    '''

     

     

     

    1.2 loc[‘d’]表示索引的是第’d’行(index 是字符)

     

    import pandas as pd
    data = [[1,2,3],[4,5,6]]
    index = ['d','e']
    columns=['a','b','c']
    df = pd.DataFrame(data=data, index=index, columns=columns)
    print df.loc['d']
    '''
    a    1
    b    2
    c    3
    '''

     

     

     

    1.3 如果想索引列数据,像这样做会报错

     

    import pandas as pd
    data = [[1,2,3],[4,5,6]]
    index = ['d','e']
    columns=['a','b','c']
    df = pd.DataFrame(data=data, index=index, columns=columns)
    print df.loc['a']
    '''
    KeyError: 'the label [a] is not in the [index]'
    '''

     

     

     

    1.4 loc可以获取多行数据

     

    import pandas as pd
    data = [[1,2,3],[4,5,6]]
    index = ['d','e']
    columns=['a','b','c']
    df = pd.DataFrame(data=data, index=index, columns=columns)
    print df.loc['d':]
    '''
       a  b  c
    d  1  2  3
    e  4  5  6
    '''

     

     

     

    1.5 loc扩展——索引某行某列

     

    import pandas as pd
    data = [[1,2,3],[4,5,6]]
    index = ['d','e']
    columns=['a','b','c']
    df = pd.DataFrame(data=data, index=index, columns=columns)
    print df.loc['d',['b','c']]
    '''
    b    2
    c    3
    '''

     

     

     

    1,6 loc扩展——索引某列

     

    import pandas as pd
    data = [[1,2,3],[4,5,6]]
    index = ['d','e']
    columns=['a','b','c']
    df = pd.DataFrame(data=data, index=index, columns=columns)
    print df.loc[:,['c']]
    '''
       c
    d  3
    e  6
    '''

     

     

     

    当然获取某列数据最直接的方式是df.[列标签],但是当列标签未知时可以通过这种方式获取列数据。

    需要注意的是,dataframe的索引[1:3]是包含1,2,3的,与平时的不同。

    2. iloc——通过行号获取行数据

    2.1 想要获取哪一行就输入该行数字

     

    import pandas as pd
    data = [[1,2,3],[4,5,6]]
    index = ['d','e']
    columns=['a','b','c']
    df = pd.DataFrame(data=data, index=index, columns=columns)
    print df.loc[1]
    '''
    a    4
    b    5
    c    6
    '''

     

     

     

    2.2 通过行标签索引会报错

     

    import pandas as pd
    data = [[1,2,3],[4,5,6]]
    index = ['d','e']
    columns=['a','b','c']
    df = pd.DataFrame(data=data, index=index, columns=columns)
    print df.iloc['a']
    '''
    TypeError: cannot do label indexing on <class 'pandas.core.index.Index'> with these indexers [a] of <type 'str'>
    '''

     

     

     

    2.3 同样通过行号可以索引多行

     

    import pandas as pd
    data = [[1,2,3],[4,5,6]]
    index = ['d','e']
    columns=['a','b','c']
    df = pd.DataFrame(data=data, index=index, columns=columns)
    print df.iloc[0:]
    '''
       a  b  c
    d  1  2  3
    e  4  5  6
    '''

     

     

     

    2.4 iloc索引列数据

     

    import pandas as pd
    data = [[1,2,3],[4,5,6]]
    index = ['d','e']
    columns=['a','b','c']
    df = pd.DataFrame(data=data, index=index, columns=columns)
    print df.iloc[:,[1]]
    '''
       b
    d  2
    e  5
    '''

     

     

     

    3. ix——结合前两种的混合索引

    3.1 通过行号索引

     

    import pandas as pd
    data = [[1,2,3],[4,5,6]]
    index = ['d','e']
    columns=['a','b','c']
    df = pd.DataFrame(data=data, index=index, columns=columns)
    print df.ix[1]
    '''
    a    4
    b    5
    c    6
    '''

     

     

     

    3.2 通过行标签索引

     

    import pandas as pd
    data = [[1,2,3],[4,5,6]]
    index = ['d','e']
    columns=['a','b','c']
    df = pd.DataFrame(data=data, index=index, columns=columns)
    print df.ix['e']
    '''
    a    4
    b    5
    c    6
    '''

     

    想学人工智能(Python、数据分析、机器学习、深度学习、推荐系统、强化学习),来公众号AI派看看吧!!

     

    展开全文
  • loc iloc

    2018-08-28 11:14:40
    参考资料https://www.douban.com/note/637242742/
  • iloc的用法

    千次阅读 2018-11-17 20:23:53
      iloc[ : , : ] 前面的冒号就是取行数,后面的冒号是取列数
  • loc和iloc

    2019-07-17 11:11:48
    iloc[n,m] :n,m为整数型。n表示行数,m表示列数 iloc[n:m,:] :取n行到m-1行的数据 loc[n,m] :n为行索引值,m为列标题值,可以为string iloc[n:m,:] :取行索引从n到m的数据 ...
  • iloc与loc区别

    千次阅读 2019-07-27 10:50:33
    iloc PK loc 导入numpy,pandas import numpy as np import pandas as pd 构建一个0,30左闭右开的偶数数组 data=np.arange(0,30,2) #arange(起始,结束,相差) data 类型ndarray print(type(data)) <class '...
  • iloc与loc

    2020-04-28 19:38:16
    可见df.iloc[a, :], df.loc[b, :]中,a的意义不同,b的取值范围是df.shape[0], a的取值范围是取自df.index
  • loc与iloc

    2020-11-30 10:32:46
    当用行号索引的时候, 尽量用 iloc 来进行索引; 而用标签索引的时候用 loc 1.loc意义:通过行标签索引行数据 例: loc[n]表示索引的是第n行(index 是整数) loc[‘d’]表示索引的是第’d’行(index 是字符) 2. ....
  • 主要介绍了pandas ix &iloc &loc的区别,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
  • pandas中loc、iloc与ix的用法比较

    千次阅读 2018-09-05 13:03:42
    iloc 在index的位置上进行索引,不包括end. ix 先在index的标签上索引,索引不到就在index的位置上索引(如果index非全整数),不包括end. 数据示例 import pandas as pd data = [[1,2,3,4,5],[6,7,8,9,10]...
  • loc和iloc的用法和区别

    千次阅读 2019-04-18 21:57:25
    iloc——通过行号索引行数据 ix——通过行标签或者行号索引行数据(基于loc和iloc 的混合) 标签切片,如’a’:‘c’,与序列切片如0:2不同,后者不包含index=2的元素,前者包含结束标签’c’所在的行。 ...
  • x_choose = x.iloc[a,b] ``` 调用的时候怎么给a,b赋值? 就是实现x数据集的样本和特征选取。 ``` train_pca(X_train, 0: 50, 5: 20) ``` ![图片说明]...
  • Python:loc和iloc的区别

    万次阅读 多人点赞 2018-10-29 22:49:53
    loc和iloc的区别 pandas以类似字典的方式来获取某一列的值,比如df[‘A’],这会得到df的A列。如果我们对某一行感兴趣呢?这个时候有两种方法,一种是iloc方法,另一种方法是loc方法。loc是指location的意思,iloc中...
  • 今天小编就为大家分享一篇详谈Pandas中iloc和loc以及ix的区别,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
  • 在数据科学领域python逐渐火热起来,超越了原有R的地位,这里丰富的第三方包的贡献功不可没,数值计算中Numpy和Pandas绝对是必备的神器,最近使用到Pandas来做数据的操作,今天正好有时间就简单地总结记录一点自己...
  • pandas ix与iloc

    2018-01-08 09:55:48
    pandas的ix已废弃,采用iloc和loc代替 iloc:行号索引 loc:行标签索引 举例说明切片区别: 索引为数字: iloc:切片左闭右开 ix: 切片左闭右闭 二者结果不同 索引为标签: iloc:切片左闭右开 ix: ...
  • python iloc/loc

    千次阅读 2019-02-20 18:12:41
    loc是根据dataframe的具体标签选取列,而iloc是根据标签所在的位置,从0开始计数。 In [1]: df = DataFrame(randn(5,2),index=range(0,10,2),columns=list('AB')) In [2]: df Out[2]: A B 0 1.068932 -0.794307...
  • pandas入门——loc与iloc函数

    万次阅读 多人点赞 2017-08-07 13:25:23
    loc与iloc函数 loc函数 import pandas as pd import numpy # 导入数据 df = pd.read_csv(filepath_or_buffer="D://movie.csv") df_new = df.set_index(["country"]) df_new.loc[list(["Canada"])] # 1 df_new.loc[df...
  • 主要介绍了详解pandas中iloc, loc和ix的区别和联系,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
  • 写在前面 虽然用了pandas很长时间了,但是基本也是围绕在用pandas去做一些文件操作以及...然后以数组的方式进行索引,因为对DataFrame用 [] 进行索引时经常会有一些易错点,而用loc、iloc时,老是忘记它们的适用...
  • .loc 与.iloc

    千次阅读 2019-01-27 18:17:20
    Python中根据位置取值可以用.loc,.iloc,.ix,还可以通过每一行的索引和列的索引,把需要的行和列单独取出来 .iloc:根据标签的所在位置,从0开始计数,选取列,如果索引是数字,就使用.iloc loc:根据DataFrame...
  • pandas.DataFrame()中的iloc和loc用法

    万次阅读 多人点赞 2018-10-25 10:12:14
    iloc,即index locate 用index索引进行定位,所以参数是整型,如:df.iloc[10:20, 3:5] loc,则可以使用column名和index名进行定位,如: df.loc[‘image1’:‘image10’, ‘age’:‘score’] 实例: import numpy ...
  • pandas学习之iloc

    2019-11-08 19:04:14
    pandas iloc test 调用方式:DataFrame.iloc[param] 说明:iloc通过行号索引数据 参数类型: 1.整数 2.整数数组 3.切片对象 4.布尔数组 5.lamda表达式 import numpy as np import pandas as pd df=pd.DataFrame...

空空如也

1 2 3 4 5 ... 20
收藏数 2,671
精华内容 1,068
关键字:

iloc