pandas的行列获取/pandas iloc和loc的使用/如何获取pandas的行和列
Pandas行和列的获取
由于平时没有系统的学习pandas,导致在实际应用过程中,对于获取df中的行和列经常出现问题,于是总结一下,供自己以后参考。
参考的书籍在线版链接:利用 Python 进行数据分析 · 第 2 版
0 查看手册
请当你看完1-5的内容再来看该部分,用于理解和以后的查询。
功能 | |||
---|---|---|---|
获取列 | df.loc[: , 列名序列] | df.iloc[ : , 列索引序列] | df[列名序列] |
获取行 | df.loc[行名序列] | df.iloc[ 行索引序列] | df[行名:列名] |
获取行和列1 | df.loc[行名序列,列名序列] | df.iloc[ 行索引序列,列索引序列] | |
获取行和列2 | df.loc[行名开始:行名结束,列名开始:列名结束] | df.iloc[行索引开始:行索引结束,列索引开始:列索引结束] |
序列的含义
由列名或者行名(列索引,行索引)组成的列表;
- 比如获取多列(行), 方法为:
df[['col1','col2']]
- 当只获取一个列(行)的时候,可以直接填写,
df['col1']
。
切片的含义
类似于列表的切片,开始:结束,pandas会获取开始->结束之间的行(列)
切片时,loc包含两端点,左闭右闭;iloc不包含结束点,左闭右开
“:”表示行(列)切片的意思,行开始点:行结束点。
loc的用法
loc[行序列,列序列]
分别表示获取指定的行序列和列序列范围的内容(iloc
同理)
当只获取行的时候,列可以省略
当只获取列的时候,行不能省略,可以写作loc[ : , 列索引],意思是所有行都选中
1 创建一个DataFrame作为示例
import pandas as pd
# 创建一个df
data = {'state': ['Ohio', 'Ohio', 'Ohio', 'Nevada', 'Nevada', 'Nevada'],'year': [2000, 2001, 2002, 2001, 2002, 2003],'pop': [1.5, 1.7, 3.6, 2.4, 2.9, 3.2]}
frame = pd.DataFrame(data, columns=['year', 'state', 'pop', 'debt'],index=['one', 'two', 'three', 'four','five', 'six'])
frame
year | state | pop | debt | |
---|---|---|---|---|
one | 2000 | Ohio | 1.5 | NaN |
two | 2001 | Ohio | 1.7 | NaN |
three | 2002 | Ohio | 3.6 | NaN |
four | 2001 | Nevada | 2.4 | NaN |
five | 2002 | Nevada | 2.9 | NaN |
six | 2003 | Nevada | 3.2 | NaN |
2 获取行和列索引
在学习获取行列之前,我们先了解一下如果获取行和列的索引
# 获取行、列名称的方法
frame.index
Index(['one', 'two', 'three', 'four', 'five', 'six'], dtype='object')
frame.columns
Index(['year', 'state', 'pop', 'debt'], dtype='object')
3 常用的索引方式
首先我们明确两个概念:
名称索引,即使用行和列的名称进行索引
['year', 'state', 'pop', 'debt']
表示的就是名称索引,它表示行和列的名称是啥整数索引,即使用行和列所在第几行第几列进行索引
整数索引就类似于列表的下标。
4 名称索引获取行列
4.1 获取列 --> df[列名]
df[列名序列]
获取一列:df[列名]
如果获取一列,我们直接写入列名即可
# 获取一列
frame["year"]
one 2000
two 2001
three 2002
four 2001
five 2002
six 2003
Name: year, dtype: int64
获取多列: df[ [多个列名] ]
如果获取多列,需要写入多个列名的列表
# 获取多列
frame[['year', 'state']]
year | state | |
---|---|---|
one | 2000 | Ohio |
two | 2001 | Ohio |
three | 2002 | Ohio |
four | 2001 | Nevada |
five | 2002 | Nevada |
six | 2003 | Nevada |
4.2 获取行 -> df.loc[]
- 使用方法类似
df[列名序列]
不过要使用的语句为:df.loc[]
获取一行
# 获取一行的的方法
frame.loc['one']
year 2000
state Ohio
pop 1.5
debt NaN
Name: one, dtype: object
获取多行
# 获取多行的方法
frame.loc[['one','two']]
year | state | pop | debt | |
---|---|---|---|---|
one | 2000 | Ohio | 1.5 | NaN |
two | 2001 | Ohio | 1.7 | NaN |
使用切片进行获取,此处不需要使用.loc
frame['one':'two']
year | state | pop | debt | |
---|---|---|---|---|
one | 2000 | Ohio | 1.5 | NaN |
two | 2001 | Ohio | 1.7 | NaN |
4.3 使用.loc方法获取你想获取的所有
获取指定的行和列区域
df.loc[ 行名序列 , 列名序列 ]:获取指定的行序列和列序列的交集,就是把这个区域确定出来
使用loc的时候左侧填写行序列,右侧填写列序列;
此处序列的概念同上,可以是单个名称,也可是一个列表。
只有行序列的时候,右侧可以省略
获取一行多列
frame.loc['one',['year','state']]
year 2000
state Ohio
Name: one, dtype: object
获取多行多列
# 同时获取指定行和列
frame.loc[['one', 'two'],['year','state']]
year | state | |
---|---|---|
one | 2000 | Ohio |
two | 2001 | Ohio |
获取指定的列区域
df.loc[:,列序列]
,此处的 冒号:,可以理解为切片的含义,即获取所有的行,同时指定列
frame.loc[:, 'year']
one 2000
two 2001
three 2002
four 2001
five 2002
six 2003
Name: year, dtype: int64
4.4 切片的妙用
我们可以指定行和列切片的起点和终点,左闭右闭区间;
下面代码可以理解为,行从名称为’two’的行开始,一直到最后;列从名称为’year’的列开始一直到最后。
frame.loc['two': , "year":]
year | state | pop | debt | |
---|---|---|---|---|
two | 2001 | Ohio | 1.7 | NaN |
three | 2002 | Ohio | 3.6 | NaN |
four | 2001 | Nevada | 2.4 | NaN |
five | 2002 | Nevada | 2.9 | NaN |
six | 2003 | Nevada | 3.2 | NaN |
当然你完全可以指定他的终点
frame.loc['two':'five', 'year':'pop']
year | state | pop | |
---|---|---|---|
two | 2001 | Ohio | 1.7 |
three | 2002 | Ohio | 3.6 |
four | 2001 | Nevada | 2.4 |
five | 2002 | Nevada | 2.9 |
5 整数索引 iloc[行索引序列,列索引序列]
iloc
的使用和loc一致,只不过是将名称索引改为整数索引
整数索引就是使用行和列的下标(索引)进行获取
5.1 获取行
就像loc,只获取行的时候,列序列完全可以省略,反之则不行。
获取一行
# 获取第0行
frame.iloc[0]
year 2000
state Ohio
pop 1.5
debt NaN
Name: one, dtype: object
获取多行
frame.iloc[[0,1]]
year | state | pop | debt | |
---|---|---|---|---|
one | 2000 | Ohio | 1.5 | NaN |
two | 2001 | Ohio | 1.7 | NaN |
使用切片获取,左闭右开
# 切片获取多行 左闭右开
frame.iloc[0:1]
year | state | pop | debt | |
---|---|---|---|---|
one | 2000 | Ohio | 1.5 | NaN |
5.2 获取列
只要将行切片获取全部即可
获取一列
frame.iloc[:, 1]
one Ohio
two Ohio
three Ohio
four Nevada
five Nevada
six Nevada
Name: state, dtype: object
获取多列
frame.iloc[:, [1, 2]]
state | pop | |
---|---|---|
one | Ohio | 1.5 |
two | Ohio | 1.7 |
three | Ohio | 3.6 |
four | Nevada | 2.4 |
five | Nevada | 2.9 |
six | Nevada | 3.2 |
使用切片获取多列
# 使用切片
frame.iloc[:, 1: 3]
state | pop | |
---|---|---|
one | Ohio | 1.5 |
two | Ohio | 1.7 |
three | Ohio | 3.6 |
four | Nevada | 2.4 |
five | Nevada | 2.9 |
six | Nevada | 3.2 |
5.3 获取指定行和列范围
方法与loc完全一致,只是换了索引的方式
获取多行多列
frame.iloc[[2,3],[1,3]]
使用切片获取
### 获取指定行和列范围
frame.iloc[2:, 3:]
debt | |
---|---|
three | NaN |
four | NaN |
five | NaN |
six | NaN |
参考:
利用 Python 进行数据分析 · 第 2 版
pandas的行列获取/pandas iloc和loc的使用/如何获取pandas的行和列相关推荐
- pandas中的切片函数: .iloc()、.loc()、.ix() 的区别
文章目录 pandas中的切片函数:`.iloc()`.`.loc()`.`.ix()` 1.首先创建一个DataFrame iloc:通过行/列号选取数据 1. .iloc就是通过行/列号来选取数据 ...
- pandas中的ix,iloc,loc方法获取数据
import pandas as pd import numpy as np from pandas import Series,DataFrame import matplotlib.pyplot ...
- Python开发之pandas行和列的获取
Python开发之pandas行和列的获取 0 1. 行和列的获取 1.1 根据索引获取行 1.2 根据条件获取行 1.3 获取列 2 区域选取 2.1 df.loc[] 2.1.1 行选取 2.1. ...
- pandas iloc 与 loc
建议:当用行索引的时候, 尽量用 iloc 来进行索引; 而用标签索引的时候用 loc .. iloc与loc可以实现相同的功能: 1)iloc获取行列值时只能用数字 2)当DataFrame的行索引 ...
- c++没有终结符的多行输入如何停止_如何使用iloc和loc 对Pandas Dataframe进行索引和切片...
在这篇文章中,我们将使用iloc和loc来处理数据.更具体地说,我们将通过iloc和loc例子来学习切片和索引. 一旦我们将一个数据集加载为Pandas dataframe,我们通常希望根据某些条件开 ...
- dataframe iloc_如何使用iloc和loc 对Pandas Dataframe进行索引和切片
在这篇文章中,我们将使用iloc和loc来处理数据.更具体地说,我们将通过iloc和loc例子来学习切片和索引. 一旦我们将一个数据集加载为Pandas dataframe,我们通常希望根据某些条件开 ...
- pandas DataFrame 索引(iloc 与 loc 的区别)
Pandas--ix vs loc vs iloc区别 0. DataFrame DataFrame 的构造主要依赖如下三个参数: data:表格数据: index:行索引: columns:列名: ...
- python中iloc切片_如何使用iloc和loc 对Pandas Dataframe进行索引和切片
Python部落(python.freelycode.com)组织翻译,禁止转载,欢迎转发. 在这篇文章中,我们将使用iloc和loc来处理数据.更具体地说,我们将通过iloc和loc例子来学习切片和 ...
- python dataframe loc函数_详解pandas DataFrame的查询方法(loc,iloc,at,iat,ix的用法和区别)...
在操作DataFrame时,肯定会经常用到loc,iloc,at等函数,各个函数看起来差不多,但是还是有很多区别的,我们一起来看下吧. 首先,还是列出一个我们用的DataFrame,注意index一列 ...
最新文章
- 曲线聚类_R语言确定聚类的最佳簇数:3种聚类优化方法
- java复习系列[3] - Java虚拟机
- python去除行末符EOL的一般方法
- 对涉密计算机检查内容,RG涉密信息自检查工具安全保密检查内容及方法.docx
- 【整理】Ubuntu10.04下安装Altera9.1套件
- windows下db2创建数据库
- 盘点:近一年全球十大数据安全事件
- 周杰伦专辑《最伟大的作品》在哪看?当贝盒子畅享周董最新MV
- Python:50行代码实现下载小说,图片章节可自动识别转文字保存...
- ctfshow web入门 命令执行:55-57
- 常用正则表达式(英文单词、数字、中文 、URL 、电话、身份证、输入内容必须以逗号隔开等)
- qute图(女生勿进
- Python编程:从入门到实践——列表简介(第三章+课后答案)
- 【深度分解】听趣拍云产品经理剖析视频基础知识(2)
- 华为云服务产品之精华问题大集烩(一)
- 华为正式发布鸿蒙回看,华为正式发布“鸿蒙”操作系统
- 【原创】NES第一波:如何用通用型6502宏汇编器,制作NES/FC游戏。
- python文件包括两种类型_python第六篇文件处理类型
- 【数据结构】测试3 栈和队列
- TP5,TP6数据排序方法按指定函数FIELD排序的方法
热门文章
- 关于代码选择省份和城市?
- 已加载插件:fastestmirror Loading mirror speeds from cached hostfile * base: mirrors.163.com * extras: m
- 蛋白组学资讯:百趣协助,非小细胞癌转移机制新解
- Oracle账号被锁定了?the account is locked?解决最多分3步!
- pkpm弹性时程分析计算书怎么出_弹性时程分析——PKPM软件操作篇.pdf
- MATLAB下载支持包时出现问题
- 杨澜:25岁后女孩子必需要懂14件事
- Windows7搭建FTP服务器详细教程
- AD9361 官方例程详解(一)
- SEED-XDS560Plus Emulator for CCS3.3.82.exe 在硬盘上都安装了什么?