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[行索引开始:行索引结束,列索引开始:列索引结束]

序列的含义

由列名或者行名(列索引,行索引)组成的列表;

  1. 比如获取多列(行), 方法为:df[['col1','col2']]
  2. 当只获取一个列(行)的时候,可以直接填写,df['col1']

切片的含义

类似于列表的切片,开始:结束,pandas会获取开始->结束之间的行(列)

  1. 切片时,loc包含两端点,左闭右闭;iloc不包含结束点,左闭右开

  2. “:”表示行(列)切片的意思,行开始点:行结束点。

loc的用法

loc[行序列,列序列]分别表示获取指定的行序列和列序列范围的内容(iloc同理)

  1. 当只获取行的时候,列可以省略

  2. 当只获取列的时候,行不能省略,可以写作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的行和列相关推荐

  1. pandas中的切片函数: .iloc()、.loc()、.ix() 的区别

    文章目录 pandas中的切片函数:`.iloc()`.`.loc()`.`.ix()` 1.首先创建一个DataFrame iloc:通过行/列号选取数据 1. .iloc就是通过行/列号来选取数据 ...

  2. pandas中的ix,iloc,loc方法获取数据

    import pandas as pd import numpy as np from pandas import Series,DataFrame import matplotlib.pyplot ...

  3. Python开发之pandas行和列的获取

    Python开发之pandas行和列的获取 0 1. 行和列的获取 1.1 根据索引获取行 1.2 根据条件获取行 1.3 获取列 2 区域选取 2.1 df.loc[] 2.1.1 行选取 2.1. ...

  4. pandas iloc 与 loc

    建议:当用行索引的时候, 尽量用 iloc 来进行索引; 而用标签索引的时候用 loc .. iloc与loc可以实现相同的功能: 1)iloc获取行列值时只能用数字 2)当DataFrame的行索引 ...

  5. c++没有终结符的多行输入如何停止_如何使用iloc和loc 对Pandas Dataframe进行索引和切片...

    在这篇文章中,我们将使用iloc和loc来处理数据.更具体地说,我们将通过iloc和loc例子来学习切片和索引. 一旦我们将一个数据集加载为Pandas dataframe,我们通常希望根据某些条件开 ...

  6. dataframe iloc_如何使用iloc和loc 对Pandas Dataframe进行索引和切片

    在这篇文章中,我们将使用iloc和loc来处理数据.更具体地说,我们将通过iloc和loc例子来学习切片和索引. 一旦我们将一个数据集加载为Pandas dataframe,我们通常希望根据某些条件开 ...

  7. pandas DataFrame 索引(iloc 与 loc 的区别)

    Pandas--ix vs loc vs iloc区别 0. DataFrame DataFrame 的构造主要依赖如下三个参数: data:表格数据: index:行索引: columns:列名: ...

  8. python中iloc切片_如何使用iloc和loc 对Pandas Dataframe进行索引和切片

    Python部落(python.freelycode.com)组织翻译,禁止转载,欢迎转发. 在这篇文章中,我们将使用iloc和loc来处理数据.更具体地说,我们将通过iloc和loc例子来学习切片和 ...

  9. python dataframe loc函数_详解pandas DataFrame的查询方法(loc,iloc,at,iat,ix的用法和区别)...

    在操作DataFrame时,肯定会经常用到loc,iloc,at等函数,各个函数看起来差不多,但是还是有很多区别的,我们一起来看下吧. 首先,还是列出一个我们用的DataFrame,注意index一列 ...

最新文章

  1. 曲线聚类_R语言确定聚类的最佳簇数:3种聚类优化方法
  2. java复习系列[3] - Java虚拟机
  3. python去除行末符EOL的一般方法
  4. 对涉密计算机检查内容,RG涉密信息自检查工具安全保密检查内容及方法.docx
  5. 【整理】Ubuntu10.04下安装Altera9.1套件
  6. windows下db2创建数据库
  7. 盘点:近一年全球十大数据安全事件
  8. 周杰伦专辑《最伟大的作品》在哪看?当贝盒子畅享周董最新MV
  9. Python:50行代码实现下载小说,图片章节可自动识别转文字保存...
  10. ctfshow web入门 命令执行:55-57
  11. 常用正则表达式(英文单词、数字、中文 、URL 、电话、身份证、输入内容必须以逗号隔开等)
  12. qute图(女生勿进
  13. Python编程:从入门到实践——列表简介(第三章+课后答案)
  14. 【深度分解】听趣拍云产品经理剖析视频基础知识(2)
  15. 华为云服务产品之精华问题大集烩(一)
  16. 华为正式发布鸿蒙回看,华为正式发布“鸿蒙”操作系统
  17. 【原创】NES第一波:如何用通用型6502宏汇编器,制作NES/FC游戏。
  18. python文件包括两种类型_python第六篇文件处理类型
  19. 【数据结构】测试3 栈和队列
  20. TP5,TP6数据排序方法按指定函数FIELD排序的方法

热门文章

  1. 关于代码选择省份和城市?
  2. 已加载插件:fastestmirror Loading mirror speeds from cached hostfile * base: mirrors.163.com * extras: m
  3. 蛋白组学资讯:百趣协助,非小细胞癌转移机制新解
  4. Oracle账号被锁定了?the account is locked?解决最多分3步!
  5. pkpm弹性时程分析计算书怎么出_弹性时程分析——PKPM软件操作篇.pdf
  6. MATLAB下载支持包时出现问题
  7. 杨澜:25岁后女孩子必需要懂14件事
  8. Windows7搭建FTP服务器详细教程
  9. AD9361 官方例程详解(一)
  10. SEED-XDS560Plus Emulator for CCS3.3.82.exe 在硬盘上都安装了什么?