1. from __future__ import print_function
  2. import pandas as pd
  3. import numpy as np
  4. np.random.seed(1)
  5. dates = pd.date_range('20130101', periods=6)
  6. df = pd.DataFrame(np.random.randn(6, 4), index=dates, columns=['A', 'B', 'C', 'D'])
  1. print(df['A'], df.A) # 选取属性值为‘A’的列,两种方法效果相同
  2. print(df[0:3], df['20130102':'20130104']) # 选取数据的前三行,选取行属性之间的数据(包括了右边属性的数据) 两种方法效果相同

select by label: loc 属性值

  1. # select by label: loc
  2. print(df.loc['20130102']) # 选取行属性为‘20130102’的数据
  3. print(df.loc[:,['A','B']]) # 选取列属性为‘A’,‘B’的所有数据
  4. print(df.loc['20130102', ['A','B']]) # 选取行属性为‘20130102’,列属性为‘A’,‘B’的数据

select by position: iloc 属性编号

  1. # select by position: iloc
  2. print(df.iloc[3]) # 选取行第4行的数据
  3. print(df.iloc[3, 1]) # 选取第4行第2列的数据
  4. print(df.iloc[3:5,0:2]) # 选取行编号为3,4 列编号为0,1的数据
  5. print(df.iloc[[1,2,4],[0,2]]) # 选取第2,3,5行,第1,3列的数据

mixed selection: ix 标签值+标签标号

  1. # mixed selection: ix
  2. print(df.ix[:3, ['A', 'C']]) # 选取前3行,列属性为‘A’,‘C’的数据

Boolean indexing 布尔

  1. # Boolean indexing
  2. print(df[df.A > 0]) # 选取所有值大于0的数据

下面是所有的输出结果:

  1. print(df)
  2. > A B C D
  3. > 2013-01-01 1.624345 -0.611756 -0.528172 -1.072969
  4. > 2013-01-02 0.865408 -2.301539 1.744812 -0.761207
  5. > 2013-01-03 0.319039 -0.249370 1.462108 -2.060141
  6. > 2013-01-04 -0.322417 -0.384054 1.133769 -1.099891
  7. > 2013-01-05 -0.172428 -0.877858 0.042214 0.582815
  8. > 2013-01-06 -1.100619 1.144724 0.901591 0.502494
  1. print(df['A'])
  2. print('\n')
  3. print(df.A)
  4. > 2013-01-01 1.624345
  5. > 2013-01-02 0.865408
  6. > 2013-01-03 0.319039
  7. > 2013-01-04 -0.322417
  8. > 2013-01-05 -0.172428
  9. > 2013-01-06 -1.100619
  10. > Freq: D, Name: A, dtype: float64
  11. > 2013-01-01 1.624345
  12. > 2013-01-02 0.865408
  13. > 2013-01-03 0.319039
  14. > 2013-01-04 -0.322417
  15. > 2013-01-05 -0.172428
  16. > 2013-01-06 -1.100619
  17. > Freq: D, Name: A, dtype: float64
  1. print(df[0:3])
  2. print('\n')
  3. print(df['20130102':'20130104'])
  4. > A B C D
  5. > 2013-01-01 1.624345 -0.611756 -0.528172 -1.072969
  6. > 2013-01-02 0.865408 -2.301539 1.744812 -0.761207
  7. > 2013-01-03 0.319039 -0.249370 1.462108 -2.060141
  8. > A B C D
  9. > 2013-01-02 0.865408 -2.301539 1.744812 -0.761207
  10. > 2013-01-03 0.319039 -0.249370 1.462108 -2.060141
  11. > 2013-01-04 -0.322417 -0.384054 1.133769 -1.099891
  1. # select by label: loc
  2. print(df.loc['20130102'])
  3. > A 0.865408
  4. > B -2.301539
  5. > C 1.744812
  6. > D -0.761207
  7. > Name: 2013-01-02 00:00:00, dtype: float64
  1. print(df.loc[:, ['A', 'B']])
  2. > A B
  3. > 2013-01-01 1.624345 -0.611756
  4. > 2013-01-02 0.865408 -2.301539
  5. > 2013-01-03 0.319039 -0.249370
  6. > 2013-01-04 -0.322417 -0.384054
  7. > 2013-01-05 -0.172428 -0.877858
  8. > 2013-01-06 -1.100619 1.144724
  1. print(df.loc['20130102', ['A', 'B']])
  2. > A 0.865408
  3. > B -2.301539
  4. > Name: 2013-01-02 00:00:00, dtype: float64
  1. # select by position: iloc
  2. print(df.iloc[3])
  3. > A -0.322417
  4. > B -0.384054
  5. > C 1.133769
  6. > D -1.099891
  7. > Name: 2013-01-04 00:00:00, dtype: float64
  1. print(df.iloc[3, 1])
  2. > -0.38405435466841564
  1. print(df.iloc[3:5, 0:2])
  2. > A B
  3. > 2013-01-04 -0.322417 -0.384054
  4. > 2013-01-05 -0.172428 -0.877858
  1. print(df.iloc[[1, 2, 4], [0, 2]])
  2. A C
  3. 2013-01-02 0.865408 1.744812
  4. 2013-01-03 0.319039 1.462108
  5. 2013-01-05 -0.172428 0.042214
  1. # mixed selection: ix
  2. print(df.ix[:3, ['A', 'C']])
  3. > A C
  4. > 2013-01-01 1.624345 -0.528172
  5. > 2013-01-02 0.865408 1.744812
  6. > 2013-01-03 0.319039 1.462108
  1. # Boolean indexing
  2. print(df[df.A > 0])
  3. > A B C D
  4. > 2013-01-01 1.624345 -0.611756 -0.528172 -1.072969
  5. > 2013-01-02 0.865408 -2.301539 1.744812 -0.761207
  6. > 2013-01-03 0.319039 -0.249370 1.462108 -2.060141

END

pandas 2 选择数据的更多相关文章

  1. pandas选择数据-【老鱼学pandas】

    选择列 根据列名来选择某列的数据 import pandas as pd import numpy as np dates = pd.date_range("2017-01-08" ...

  2. 【转】Pandas学习笔记(二)选择数据

    Pandas学习笔记系列: Pandas学习笔记(一)基本介绍 Pandas学习笔记(二)选择数据 Pandas学习笔记(三)修改&添加值 Pandas学习笔记(四)处理丢失值 Pandas学 ...

  3. pandas 学习 第14篇:索引和选择数据

    数据框和序列结构中都有轴标签,轴标签的信息存储在Index对象中,轴标签的最重要的作用是: 唯一标识数据,用于定位数据 用于数据对齐 获取和设置数据集的子集. 本文重点关注如何对序列(Series)和 ...

  4. [数据清洗]-使用 Pandas 清洗“脏”数据

    概要 准备工作 检查数据 处理缺失数据 添加默认值 删除不完整的行 删除不完整的列 规范化数据类型 必要的转换 重命名列名 保存结果 更多资源 Pandas 是 Python 中很流行的类库,使用它可 ...

  5. [数据清洗]- Pandas 清洗“脏”数据(三)

    预览数据 这次我们使用 Artworks.csv ,我们选取 100 行数据来完成本次内容.具体步骤: 导入 Pandas 读取 csv 数据到 DataFrame(要确保数据已经下载到指定路径) D ...

  6. [数据清洗]-Pandas 清洗“脏”数据(一)

    概要 准备工作 检查数据 处理缺失数据 添加默认值 删除不完整的行 删除不完整的列 规范化数据类型 必要的转换 重命名列名 保存结果 更多资源 Pandas 是 Python 中很流行的类库,使用它可 ...

  7. Python 数据分析 - 索引和选择数据

    loc,iloc,ix三者间的区别和联系 loc .loc is primarily label based, but may also be used with a boolean array. 就 ...

  8. Pandas透视表处理数据(转)

    手把手教你用Pandas透视表处理数据(附学习资料) 2018-01-06 数据派THU 来源:伯乐在线 -  PyPer 本文共2203字,建议阅读5分钟.本文重点解释pandas中的函数pivot ...

  9. Pandas怎样新增数据列

    Pandas怎样新增数据列? 在进行数据分析时,经常需要按照一定条件创建新的数据列,然后进行进一步分析. 直接赋值 df.apply方法 df.assign方法 按条件选择分组分别赋值 0.读取csv ...

随机推荐

  1. [置顶] 献给写作者的 Markdown 新手指南

    作者:http://jianshu.io/p/q81RER 出处:http://jianshu.io/p/q81RER 献给写作者的 Markdown 新手指南 简书 「简书」作为一款「写作软件」在诞 ...

  2. debian 9 安装无线网卡

    #添加源 echo "deb http://httpredir.debian.org/debian/ stretch main contrib non-free" >> ...

  3. 刷新页面vuex数据不消失和不跳转页面

    先说点什么 vuex和路由拦截这一块捣鼓的有一段时间了,总算是爬出来了,特地来分享一下,首先声明没有什么基础介绍,用的是登录状态存储sessionStorage的方法!!! 进入正题 刷新 刷新相当与 ...

  4. PHP读取XML数据中CDATA内数值

    // 在开发过程中遇到对XML获取时候加载 CDATA 无法读取内部的数值(例如微信平台的返回值) $content = simplexml_load_string('<content>& ...

  5. Mybatis动态代理实现函数调用

    如果我们要使用MyBatis进行数据库操作的话,大致要做两件事情: 1. 定义DAO接口 在DAO接口中定义需要进行的数据库操作. 2. 创建映射文件 当有了DAO接口后,还需要为该接口创建映射文件. ...

  6. SQLSERVER-存储过程知识点

    原文链接:http://www.qeefee.com/article/000566 存储过程是一组预编译的SQL语句,它可以包含数据操纵语句.变量.逻辑控制语句等. 存储过程允许带参数: 输入参数:可 ...

  7. 设计网页录入信息与自己定义server数据接收

    需求:设计一个注冊网页用于录入username和登录password.并将数据传入server并显示出来. 1.前言:网页提交的 get 和 post 两种方式. (1)对于get提交方式,以本文中样 ...

  8. node.js mongodb ReplSet

    随着web2.0兴起,高并发大数据量的应用对数据库高速响应的性能要求日趋明显,传统的关系型数据库在这方面显得有些乏力.有矛自有盾,内存DB的出现弥补了传统关系型db的不足.眼下市面流行的内存db主要有 ...

  9. Webserver管理系列:4、WinPE

    WinPE能够识别NTFS分区,使用WinPE能够备份/还原系统.能够重置用户password. 首先给大家看下怎样用WinPE重置password: 放入WinPE光盘-〉启动后-〉点開始菜单-〉程 ...

  10. Android中Handler原理

    Handler主要是主线程和子线程通信.一般子线程中做一些耗时操作做完之后通知主线程来改动UI. 实际上android系统在Activity启动或者状态变化等都是通过Handler机制实现的. 首先进 ...