pandas之数据选择
pandas中有三种索引方法:.loc,.iloc和[],注意:.ix的用法在0.20.0中已经不建议使用了
import pandas as pd
import numpy as np
In [5]:
dates = pd.date_range("20170101",periods=6)
df1 = pd.DataFrame(np.arange(24).reshape(6,4),index=dates,columns=["A","B","C","D"])
df1
Out[5]:
| A | B | C | D | |
|---|---|---|---|---|
| 2017-01-01 | 0 | 1 | 2 | 3 |
| 2017-01-02 | 4 | 5 | 6 | 7 |
| 2017-01-03 | 8 | 9 | 10 | 11 |
| 2017-01-04 | 12 | 13 | 14 | 15 |
| 2017-01-05 | 16 | 17 | 18 | 19 |
| 2017-01-06 | 20 | 21 | 22 | 23 |
In [6]:
将dataframe的列获取为一个series
df1["A"]#将dataframe的列获取为一个series
Out[6]:
2017-01-01 0
2017-01-02 4
2017-01-03 8
2017-01-04 12
2017-01-05 16
2017-01-06 20
Freq: D, Name: A, dtype: int32
In [7]:
df1.A#另一种获取
Out[7]:
2017-01-01 0
2017-01-02 4
2017-01-03 8
2017-01-04 12
2017-01-05 16
2017-01-06 20
Freq: D, Name: A, dtype: int32
In [8]:
切片,获取前2行
df1[0:2]#切片,获取前2行
Out[8]:
| A | B | C | D | |
|---|---|---|---|---|
| 2017-01-01 | 0 | 1 | 2 | 3 |
| 2017-01-02 | 4 | 5 | 6 | 7 |
In [9]:
通过索引获取指定行
df1["20170102":"20170104"]#通过索引获取指定行
Out[9]:
| A | B | C | D | |
|---|---|---|---|---|
| 2017-01-02 | 4 | 5 | 6 | 7 |
| 2017-01-03 | 8 | 9 | 10 | 11 |
| 2017-01-04 | 12 | 13 | 14 | 15 |
In [11]:
通过标签选择数据
#通过标签选择数据
df1.loc["20170102"]
Out[11]:
A 4
B 5
C 6
D 7
Name: 2017-01-02 00:00:00, dtype: int32
In [12]:
提取某个行的指定列
df1.loc["20170102",["A","C"]]#提取某个行的指定列
Out[12]:
A 4
C 6
Name: 2017-01-02 00:00:00, dtype: int32
In [13]:
df1.loc[:,["A","B"]]
Out[13]:
| A | B | |
|---|---|---|
| 2017-01-01 | 0 | 1 |
| 2017-01-02 | 4 | 5 |
| 2017-01-03 | 8 | 9 |
| 2017-01-04 | 12 | 13 |
| 2017-01-05 | 16 | 17 |
| 2017-01-06 | 20 | 21 |
In [14]:
通过位置选择数据
#通过位置选择数据
df1.iloc[2]#提取第二行
Out[14]:
A 8
B 9
C 10
D 11
Name: 2017-01-03 00:00:00, dtype: int32
In [15]:
df1.iloc[1:3,2:4]
Out[15]:
| C | D | |
|---|---|---|
| 2017-01-02 | 6 | 7 |
| 2017-01-03 | 10 | 11 |
In [18]:
提取不连续的行和列
#提取不连续的行和列
df1.iloc[[1,2,4],[1,3]]
Out[18]:
| B | D | |
|---|---|---|
| 2017-01-02 | 5 | 7 |
| 2017-01-03 | 9 | 11 |
| 2017-01-05 | 17 | 19 |
In [20]:
#混合标签位置选择
df1.ix[2:4,["A","C"]]
c:\users\wuzs\appdata\local\programs\python\python36-32\lib\site-packages\ipykernel_launcher.py:2: FutureWarning:
.ix is deprecated. Please use
.loc for label based indexing or
.iloc for positional indexing
See the documentation here:
http://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#ix-indexer-is-deprecated
c:\users\wuzs\appdata\local\programs\python\python36-32\lib\site-packages\pandas\core\indexing.py:808: FutureWarning:
.ix is deprecated. Please use
.loc for label based indexing or
.iloc for positional indexing
See the documentation here:
http://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#ix-indexer-is-deprecated
retval = getattr(retval, self.name)._getitem_axis(key, axis=i)
Out[20]:
| A | C | |
|---|---|---|
| 2017-01-03 | 8 | 10 |
| 2017-01-04 | 12 | 14 |
In [23]:
df1.ix["20170102":"20170104",2:4]
c:\users\wuzs\appdata\local\programs\python\python36-32\lib\site-packages\ipykernel_launcher.py:1: FutureWarning:
.ix is deprecated. Please use
.loc for label based indexing or
.iloc for positional indexing
See the documentation here:
http://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#ix-indexer-is-deprecated
"""Entry point for launching an IPython kernel.
Out[23]:
| C | D | |
|---|---|---|
| 2017-01-02 | 6 | 7 |
| 2017-01-03 | 10 | 11 |
| 2017-01-04 | 14 | 15 |
In [24]:
判断某一行的值大小
#判断某一行的值大小
df1.A >6
Out[24]:
2017-01-01 False
2017-01-02 False
2017-01-03 True
2017-01-04 True
2017-01-05 True
2017-01-06 True
Freq: D, Name: A, dtype: bool
In [25]:
df1[df1.A>6]#根据判断组成新的DataFrame
Out[25]:
| A | B | C | D | |
|---|---|---|---|---|
| 2017-01-03 | 8 | 9 | 10 | 11 |
| 2017-01-04 | 12 | 13 | 14 | 15 |
| 2017-01-05 | 16 | 17 | 18 | 19 |
| 2017-01-06 | 20 | 21 | 22 | 23 |
In [ ]:
pandas之数据选择的更多相关文章
- Pandas:DataFrame数据选择方法(索引)
#首先创建我们的Series对象,然后合并到dataframe对象里面去 import pandas as pd import numpy as np area=pd.Series({,,,}) po ...
- 【转载】使用Pandas对数据进行筛选和排序
使用Pandas对数据进行筛选和排序 本文转载自:蓝鲸的网站分析笔记 原文链接:使用Pandas对数据进行筛选和排序 目录: sort() 对单列数据进行排序 对多列数据进行排序 获取金额最小前10项 ...
- 【转载】使用Pandas创建数据透视表
使用Pandas创建数据透视表 本文转载自:蓝鲸的网站分析笔记 原文链接:使用Pandas创建数据透视表 目录 pandas.pivot_table() 创建简单的数据透视表 增加一个行维度(inde ...
- 基于pandas进行数据预处理
很久没用pandas,有些有点忘了,转载一个比较完整的利用pandas进行数据预处理的博文:https://blog.csdn.net/u014400239/article/details/70846 ...
- pandas 新增数据列(直接赋值、apply,assign、分条件赋值)
# pandas新增数据列(直接赋值.apply.assign.分条件赋值) # pandas在进行数据分析时,经常需要按照一定条件创建新的数据列,然后进行进一步分析 # 1 直接赋值 # 2 df. ...
- python-数据描述与分析2(利用Pandas处理数据 缺失值的处理 数据库的使用)
2.利用Pandas处理数据2.1 汇总计算当我们知道如何加载数据后,接下来就是如何处理数据,虽然之前的赋值计算也是一种计算,但是如果Pandas的作用就停留在此,那我们也许只是看到了它的冰山一角,它 ...
- 利用Python进行数据分析(12) pandas基础: 数据合并
pandas 提供了三种主要方法可以对数据进行合并: pandas.merge()方法:数据库风格的合并: pandas.concat()方法:轴向连接,即沿着一条轴将多个对象堆叠到一起: 实例方法c ...
- 【转载】使用Pandas进行数据提取
使用Pandas进行数据提取 本文转载自:蓝鲸的网站分析笔记 原文链接:使用python进行数据提取 目录 set_index() ix 按行提取信息 按列提取信息 按行与列提取信息 提取特定日期的信 ...
- 【转载】使用Pandas进行数据匹配
使用Pandas进行数据匹配 本文转载自:蓝鲸的网站分析笔记 原文链接:使用Pandas进行数据匹配 目录 merge()介绍 inner模式匹配 lefg模式匹配 right模式匹配 outer模式 ...
随机推荐
- shell脚本基础和grep文本处理工具企业应用3
文本处理工具: linux上文本处理三剑客 grep,egrep,fgrep:文本过滤工具(模式:pattern)工具 grep:默认支持的是基本正则表达式: ...
- PHP程序员要掌握的技能
1. Composer 第一点就要提 Composer ,自从 Composer 出现后,PHP 的依赖管理可以变得非常简单.程序内依赖一些类库和框架,直接使用 Composer 引入即可,通过使用 ...
- JVM锁说明
以前Synchronised关键字加锁效率问题,经常受到吐槽.后来java的开发团队进行了优化,引入了偏向锁.自旋锁.轻量锁,性能有了很大的提升.下面我们来分析下这里面的过程和原理. ...
- Oracle之:查询锁表,删除锁表
-- 查询当前哪个表被锁 select sess.sid, sess.serial#, lo.oracle_username, lo.os_user_name, ao.object_name, lo. ...
- mysql 查看删除触发器等操作
mysql 查看删除触发器等操作 平时很少操作触发器,源于昨晚的一次故障,使用pt-online-change-schema修改大表过程中出现异常,再次执行时,提示已经存在触发器,导致失败. 这里推荐 ...
- Springboot的resources下资源访问的问题
对于路径问题,是让我一直感到痛苦的事情,首先是因为我的眼高手低,感觉路径这么简单根本没必要去看,但是昨天项目组长的冷嘲热讽让我无地自容:“你竟然连linux和window的路径的区别都不知道,呵呵”. ...
- Python 特点
优点 简单 -- Python 是一种代表简单主义思想的语言.阅读一个良好的 Python 程序就感觉像是在读英语一样,尽管这个英语的要求非常严格!Python 的这种伪代码本质是它最大的优点之一.它 ...
- MySQL-5.6.13解压版(zip版)安装配置教程
来源:http://www.splaybow.com/post/mysql-5-6-13-zip-install.html [下载MySQL 5.6.13] 从MySQL官方网站mysql.com找到 ...
- hdu 5753
Permutation Bo Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others) ...
- Oracle实现分页,每页有多少条记录数
分页一直都是关系数据库的热门,在数据量非常多的情况下,需要根据分页展示,每页展示多少条记录,以此减轻数据的压力; 1实现原理,根据rownum取记录数,根据公式(页数-1)*每页想要展示的记录数 AN ...