我们对 DataFrame 进行选择,大抵从这三个层次考虑:行列、区域、单元格。
其对应使用的方法如下:
一. 行,列 --> df[]
二. 区域   --> df.loc[], df.iloc[], df.ix[]
三. 单元格 --> df.at[], df.iat[]

下面开始练习:

import numpy as np
import pandas as pd df = pd.DataFrame(np.random.randn(6,4), index=list('abcdef'), columns=list('ABCD'))

1. df[]:

一维
行维度:
    整数切片、标签切片、<布尔数组>
列维度:
    标签索引、标签列表、Callable

df[:3]
df['a':'c']
df[[True,True,True,False,False,False]] # 前三行(布尔数组长度等于行数)
df[df['A']>0] # A列值大于0的行
df[(df['A']>0) | (df['B']>0)] # A列值大于0,或者B列大于0的行
df[(df['A']>0) & (df['C']>0)] # A列值大于0,并且C列大于0的行
df['A']
df[['A','B']]
df[lambda df: df.columns[0]] # Callable

2. df.loc[]

二维,先行后列
行维度:
    标签索引、标签切片、标签列表、<布尔数组>、Callable
列维度:
    标签索引、标签切片、标签列表、<布尔数组>、Callable

df.loc['a', :]
df.loc['a':'d', :]
df.loc[['a','b','c'], :]
df.loc[[True,True,True,False,False,False], :] # 前三行(布尔数组长度等于行数)
df.loc[df['A']>0, :]
df.loc[df.loc[:,'A']>0, :]
df.loc[df.iloc[:,0]>0, :]
df.loc[lambda _df: _df.A > 0, :]
df.loc[:, 'A']
df.loc[:, 'A':'C']
df.loc[:, ['A','B','C']]
df.loc[:, [True,True,True,False]] # 前三列(布尔数组长度等于行数)
df.loc[:, df.loc['a']>0] # a行大于0的列
df.loc[:, df.iloc[0]>0] # 0行大于0的列
df.loc[:, lambda _df: ['A', 'B']]
df.A.loc[lambda s: s > 0]

3. df.iloc[]

二维,先行后列
行维度:
    整数索引、整数切片、整数列表、<布尔数组>
列维度:
    整数索引、整数切片、整数列表、<布尔数组>、Callable

df.iloc[3, :]
df.iloc[:3, :]
df.iloc[[0,2,4], :]
df.iloc[[True,True,True,False,False,False], :] # 前三行(布尔数组长度等于行数)
df.iloc[df['A']>0, :] #× 为什么不行呢?想不通!
df.iloc[df.loc[:,'A']>0, :] #×
df.iloc[df.iloc[:,0]>0, :] #×
df.iloc[lambda _df: [0, 1], :]
df.iloc[:, 1]
df.iloc[:, 0:3]
df.iloc[:, [0,1,2]]
df.iloc[:, [True,True,True,False]] # 前三列(布尔数组长度等于行数)
df.iloc[:, df.loc['a']>0] #×
df.iloc[:, df.iloc[0]>0] #×
df.iloc[:, lambda _df: [0, 1]]

4. df.ix[]

二维,先行后列
行维度:
    整数索引、整数切片、整数列表、
    标签索引、标签切片、标签列表、
    <布尔数组>、
    Callable
列维度:
    整数索引、整数切片、整数列表、
    标签索引、标签切片、标签列表、
    <布尔数组>、
    Callable

df.ix[0, :]
df.ix[0:3, :]
df.ix[[0,1,2], :] df.ix['a', :]
df.ix['a':'d', :]
df.ix[['a','b','c'], :]
df.ix[:, 0]
df.ix[:, 0:3]
df.ix[:, [0,1,2]] df.ix[:, 'A']
df.ix[:, 'A':'C']
df.ix[:, ['A','B','C']]

5. df.at[]

精确定位单元格
行维度:
    标签索引
列维度:
    标签索引

df.at['a', 'A']

6. df.iat[]

精确定位单元格

行维度:
    整数索引
列维度:
    整数索引

df.iat[0, 0]

pandas 数据索引与选取的更多相关文章

  1. python库学习笔记——Pandas数据索引:ix、loc、iloc区别

    Different Choices for Indexing 1. loc--通过行标签索引行数据 1.1 loc[1]表示索引的是第1行(index 是整数) import pandas as pd ...

  2. python数据分析之pandas数据选取:df[] df.loc[] df.iloc[] df.ix[] df.at[] df.iat[]

    1 引言 Pandas是作为Python数据分析著名的工具包,提供了多种数据选取的方法,方便实用.本文主要介绍Pandas的几种数据选取的方法. Pandas中,数据主要保存为Dataframe和Se ...

  3. pandas 索引、选取和过滤

    Series索引的工作方式类似于NumPy数组的索引,不过Series的索引值不只是整数,如: import numpy as np import pandas as pd from pandas i ...

  4. Python数据科学手册-Pandas:层级索引

    一维数据 和 二维数据 分别使用Series 和 DataFrame 对象存储. 多维数据:数据索引 超过一俩个 键. Pandas提供了Panel 和 Panel4D对象 解决三维数据和四维数据. ...

  5. Pandas基本功能之选取索引和过滤

    索引.选取和过滤 大部分的查询用法 类型 说明 obj[val] 选取DataFrame的单个列或一组列 obj.ix[val] 选取DataFrame的单个行或一组行 obj.ix[:,val] 选 ...

  6. 数据分析与展示——Pandas数据特征分析

    Pandas数据特征分析 数据的排序 将一组数据通过摘要(有损地提取数据特征的过程)的方式,可以获得基本统计(含排序).分布/累计统计.数据特征(相关性.周期性等).数据挖掘(形成知识). .sort ...

  7. pandas小记:pandas数据输入输出

    http://blog.csdn.net/pipisorry/article/details/52208727 数据输入输出 数据pickling pandas数据pickling比保存和读取csv文 ...

  8. Pandas数据排序

    Pandas数据排序 .sort_index() 在指定轴上根据索引进行排序,索引排序后内容会跟随排序 b = pd.DataFrame(np.arange(20).reshape(4,5),inde ...

  9. Pandas数据存取

    pd.read_excel('foo.xlsx', 'Sheet1', index_col=None, na_values=['NA']) Pandas数据存取 Pandas可以存取多种介质类型数据, ...

随机推荐

  1. oc 字符串

    #import <Foundation/Foundation.h> int main(int argc, const char * argv[]) { @autoreleasepool { ...

  2. Saiku 下载,安装

    Saiku是一个模块化的开源分析套件,它提供轻量级的OLAP(联机分析处理),并且可嵌入.可扩展.可配置. 主页:http://community.meteorite.bi 如何安装摘自: http: ...

  3. 分分钟学会使用memcached

    1.首先要搭建服务端的程序. 下载地址:http://pan.baidu.com/s/1hrJ9jE0 密码:spqc 将对应版本的文件夹,放到D盘,任意位置即可 桌面-程序-运行-cmd-打开命令行 ...

  4. InfluxDB Cli中查询结果中time格式显示设置

    InfluxDB Cli中,time默认显示为19位时间戳格式,平时查询起来特不方便,那么,如何设置成为我们人类能看懂的时间格式呢? 方法有二: 1.$ influx -precision rfc33 ...

  5. java web中日期Date类型在页面中格式化显示的三种方式

    一般我们经常需要在将服务器端的Date类型,传到页面进行显示,这就涉及到一个如何格式化显示Date类型的问题,一般我们有三种方式进行: 1)在服务端使用SimpleDateFormat等类格式化成字符 ...

  6. centos7 拨号之后添加路由

    问题:拨号主机再自动拨号(/sbin/ifdown ppp0;/sbin/ifup ppp0)之后,无法上网(没有添加路由) 思路:在拨号程序中添加路由代码 vim /sbin/ifup { slee ...

  7. oc-基本语法

    一.第一个oc程序 #import <Foundation/Foundation.h> int main(int argc, const char * argv[]) { NSLog(@& ...

  8. I2C 总线协议

    1.I2C协议     2条双向串行线,一条数据线SDA,一条时钟线SCL.   SDA传输数据是大端传输,每次传输8bit,即一字节.   支持多主控(multimastering),任何时间点只能 ...

  9. vs安装mvc

    需要一个MVC框架和SP1补丁包,SP1补丁包的下载地址为:http://www.microsoft.com/downloads/details.aspx?FamilyID=27673c47-b3b5 ...

  10. 【读书笔记《Android游戏编程之从零开始》】8.Android 游戏开发常用的系统控件(系统控件常见问题)

    Android 中常用的计量单位Android有时候需要一些计量单位,比如在布局Layout文件中可能需要指定具体单位等.常用的计量单位有:px.dip(dp).sp,以及一些不常用的pt.in.mm ...