• 技术文章 >后端开发 >Python教程

    pandas+dataframe实现行列选择与切片操作

    php中世界最好的语言php中世界最好的语言2018-04-12 09:57:35原创2722
    这次给大家带来pandas+dataframe实现行列选择与切片操作,pandas+dataframe实现行列选择与切片操作的注意事项有哪些,下面就是实战案例,一起来看一下。

    SQL中的select是根据列的名称来选取;Pandas则更为灵活,不但可根据列名称选取,还可以根据列所在的position(数字,在第几行第几列,注意pandas行列的position是从0开始)选取。相关函数如下:

    1)loc,基于列label,可选取特定行(根据行index);

    2)iloc,基于行/列的position;

    3)at,根据指定行index及列label,快速定位DataFrame的元素;

    4)iat,与at类似,不同的是根据position来定位的;

    5)ix,为loc与iloc的混合体,既支持label也支持position;

    实例

    import pandas as pd
    import numpy as np
    df = pd.DataFrame({'total_bill': [16.99, 10.34, 23.68, 23.68, 24.59],
              'tip': [1.01, 1.66, 3.50, 3.31, 3.61],
              'sex': ['Female', 'Male', 'Male', 'Male', 'Female']})
    # data type of columns
    print df.dtypes
    # indexes
    print df.index
    # return pandas.Index
    print df.columns
    # each row, return array[array]
    print df.values
    print df
    sex      object
    tip      float64
    total_bill  float64
    dtype: object
    RangeIndex(start=0, stop=5, step=1)
    Index([u'sex', u'tip', u'total_bill'], dtype='object')
    [['Female' 1.01 16.99]
     ['Male' 1.66 10.34]
     ['Male' 3.5 23.68]
     ['Male' 3.31 23.68]
     ['Female' 3.61 24.59]]
       sex  tip total_bill
    0 Female 1.01    16.99
    1  Male 1.66    10.34
    2  Male 3.50    23.68
    3  Male 3.31    23.68
    4 Female 3.61    24.59
    print df.loc[1:3, ['total_bill', 'tip']]
    print df.loc[1:3, 'tip': 'total_bill']
    print df.iloc[1:3, [1, 2]]
    print df.iloc[1:3, 1: 3]
      total_bill  tip
    1    10.34 1.66
    2    23.68 3.50
    3    23.68 3.31
      tip total_bill
    1 1.66    10.34
    2 3.50    23.68
    3 3.31    23.68
      tip total_bill
    1 1.66    10.34
    2 3.50    23.68
      tip total_bill
    1 1.66    10.34
    2 3.50    23.68

    错误的表示:

    print df.loc[1:3, [2, 3]]#.loc仅支持列名操作
    KeyError: 'None of [[2, 3]] are in the [columns]'
    print df.loc[[2, 3]]#.loc可以不加列名,则是行选择
      sex  tip total_bill
    2 Male 3.50    23.68
    3 Male 3.31    23.68
    print df.iloc[1:3]#.iloc可以不加第几列,则是行选择
    sex  tip total_bill
    1 Male 1.66    10.34
    2 Male 3.50    23.68
    print df.iloc[1:3, 'tip': 'total_bill']
    TypeError: cannot do slice indexing on <class 'pandas.indexes.base.Index'> with these indexers [tip] of <type 'str'>
    print df.at[3, 'tip']
    print df.iat[3, 1]
    print df.ix[1:3, [1, 2]]
    print df.ix[1:3, ['total_bill', 'tip']]
    3.31
    3.31
      tip total_bill
    1 1.66    10.34
    2 3.50    23.68
    3 3.31    23.68
      total_bill  tip
    1    10.34 1.66
    2    23.68 3.50
    3    23.68 3.31
    print df.ix[[1, 2]]#行选择
      sex  tip total_bill
    1 Male 1.66    10.34
    2 Male 3.50    23.68
    print df[1: 3]
    print df[['total_bill', 'tip']]
    # print df[1:2, ['total_bill', 'tip']] # TypeError: unhashable type
    sex  tip total_bill
    1 Male 1.66    10.34
    2 Male 3.50    23.68
      total_bill  tip
    0    16.99 1.01
    1    10.34 1.66
    2    23.68 3.50
    3    23.68 3.31
    4    24.59 3.61
    print df[1:3,1:2]
    TypeError: unhashable type

    相信看了本文案例你已经掌握了方法,更多精彩请关注php中文网其它相关文章!

    推荐阅读:

    pandas中的Dataframe查询有哪些方法

    selenium+cookie跳过验证码登录实现步奏详解

    以上就是pandas+dataframe实现行列选择与切片操作的详细内容,更多请关注php中文网其它相关文章!

    声明:本文原创发布php中文网,转载请注明出处,感谢您的尊重!如有疑问,请联系admin@php.cn处理
    上一篇:pandas中的Dataframe查询有哪些方法 下一篇:python3下调用搜狗AI API的方法
    大前端线上培训班

    相关文章推荐

    • 详解Python的迭代器、生成器以及相关的itertools包• 分析在Python中何种情况下需要使用断言• Django框架中方法的访问和查找• Python中类型关系和继承关系实例详解• 用C++封装MySQL的API的教程

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网