dataframe是pandas包的重要对象,熟练掌握dataframe的基本操作是很有必要的。

下面就总结一下dataframe取行列元素的基本操作。

一. DataFrame的基本结构

可以理解为一个矩阵,所有的行名保存在index, 列名保存在columns(注意:一个是单数,一个是复数)。写程序的时候不仅要调用pandas (import pandas as pd), 还要记得调用numpy这个包:(import numpy as np), pandas不默认包含numpy

构建一个3×3的dataframe如下:

df = pd.DataFrame(np.arange(9).reshape(3, 3), index = ['row1', 'row2', 'row3'], columns=['col1', 'col2','col3'])

例子里面行名df.index=Index(['row1','row2','row3'],dtype='object')

以及df.columns=Index(['col1','col2','col3'],dtype='object')。(Index对象用来保存标签数据)。

二. 按索引或行列名选取DataFrame的行和列的方法

1)用列名取一列 (不推荐)

df['col1']即取得第一列,是一个Series对象。

注意:用df['row1'],df[0],df[:,0],df[0,:]统统都会报错的,这类命令只能用来按列名取一列。(ugly的设计!)

2)按行号取行(不推荐)

df[0:2]代表取得第0行和第1行

注意:只取一行的话,要用df[0:1],不能用df[0]。(ugly的设计!)

3)使用iloc按行号列号来取(推荐)

取一行:df.iloc[0]或df.iloc[0,:]

取多行:df.iloc[[0,2]]或df.iloc[[0,2],:]

取连续多行:df.iloc[0:2]或df.iloc[0:2,:]

取一列:df.iloc[:,0]

取多列:df.iloc[:,[0,2]]或df.iloc[:,[0,2]]

取连续多列:df.iloc[:,0:2]

注意:

  • 取行的时候可以不提列,也可以用",:"来指全列。
  • 取列的时候必须用":,"来指定全行。
  • 可以使用一个数字来代表一个,可以使用一个list [a,b]代表多个,也可以使用a:b代表连续多个。

4)使用loc按行名列名来取(推荐)

取一行:df.loc['row1']或df.loc['row1',:]

取多行:df.loc[['row1','row2']]或df.loc[['row1','row2'],:]

取连续多行:df.loc['row1':'row2']或df.loc['row1':'row2',:]

取一列:df.loc[:,'col1']

取多列:df.loc[:,['row1','row2']]

取连续多列:df.loc[:,'row1':'row2']

注意:

  • 取行的时候可以不提列,也可以用",:"来指全列。
  • 取列的时候必须用":,"来指定全行。
  • 可以使用一个数字来代表一个,可以使用一个list ['a','b']代表多个,也可以使用'a':'b'代表连续多个。

5)使用ix(不推荐)

ix的使用方法和iloc类似,可以既使用数字索引,也可以使用行名列名索引。ix目前已经被弃用,就不赘述了。

6)使用iat和at(不推荐)

iat和at只能去单个元素,iat使用索引,at使用行列名,但是其功能被iloc和loc包含,因此不推荐。

总结下来就是:(重点!!!!)

  1. 推荐使用iloc和loc,其他方式均不推荐。
  2. 取行可以不提列,取列必须提行。
  3. 可以用一个数字,一个list,或者一个区间来取行列。

三. 按条件选取DataFrame的行和列

选取行的原理就是:

df.loc[一个由True和False组成的Series]=只包括True对应的行的子矩阵

选取列的原理就是:

df.loc[:,一个由True和False组成的Series] = 只包括False对应的列的子矩阵

(注意不可以使用iloc)

例如:df.loc[df['col1']==3],就是取出第一列,凡是对应数字为3的给True,不为3的给False,然后去所有为True的行。

df.loc[~(df['col1'!=3)] 同上。

而本质上如下命令也可以取得同样的效果:

df.loc[df.loc[:,'col1']==3,:],

df.loc[df.iloc[:,0]==3,:]。

例如:df.loc[:,df.loc['row1']==1] 就是取出第一行,凡是对应数字为1的给True,不为1的给False, 然后取所有为True的列。

四. 按条件替换Dataframe某一列或行的值

df.loc[df['col1']==3,'col1']=99, 把第一列中的包含3的元素替换成99。

df.loc['row1',df.loc['row1',:]==1]=99, 把第一行中的包含1的元素替换成99。

本质上原理和第二节和第三节加粗部分叙述的原理相同。

五. 按条件替换整个矩阵某些元素的值

原理:对于整个df进行判断,例如df>4代表一个True和False的矩阵。

然后df[df>4]=100,会把所有True对应的元素替换成100,于是df变成

dataframe 空值替换为0_dataframe取元素方法总结相关推荐

  1. python dataframe取行列_dataframe取元素方法总结

    dataframe是pandas包的重要对象,熟练掌握dataframe的基本操作是很有必要的. 下面就总结一下dataframe取行列元素的基本操作. 一. DataFrame的基本结构 可以理解为 ...

  2. dataframe 空值替换为0_Python数据结构大结局:DataFrame

    前一篇文章提到了序列,可以理解为Excel里没有列名的一列数据,那么Excel里的由行列组成的表数据是如何对应到Python中的呢?就是今天要说的数据框:DataFrame. 它是由一组数据和一对索引 ...

  3. DataFrame修改某列的取值(方法:map字典映射和嵌套if,else语句)

    文章目录 Map字典映射 if else 嵌套重新赋值 关于map()和匿名函数lambda 在将两种类型数据合并的时候,由于版本不同导致某一列中取值不同,因此在行转列进行统计的时候先要对齐.修改列值 ...

  4. dataframe 空值替换为0_缓解Pandas中DataFrame占用内存过高

    0 背景 在我们使用pandas进行数据处理的时候,有时候发现文件在本地明明不大,但是用pandas以DataFrame形式加载内存中的时候会占用非常高的内存,本文即解决这样的问题. 1 原因 如果是 ...

  5. dataframe 空值替换为0_Python数据分析:Pandas之DataFrame

    内容目录 DataFrame简介 DataFrame创建方式 DataFrame索引和切片 DataFrame属性 DataFrame级联与合并 DataFrame基本操作 DataFrame分组聚合 ...

  6. python中各种序列/容器的索引、切片小结;如何取得可迭代对象中的element?如何取元素?

    目录 一.python中的各种序列/容器指哪些? 二.如何取用list列表中的元素? 三.如何取用tuple元组中的元素? 四.如何取用ndarray数组中的元素? 五.如何取用dict字典中的元素? ...

  7. python中的输出list中元素方法_python 输出所有列表元素的乘积

    def multiply_list(items): tot = 1 for x in items: tot *= x return tot print(multiply_list([1,2,-8])) ...

  8. html标签一对一绑定的组件,一种原生组件替换HTML标签的轻量级方法尝试

    不管是从出于性能.开发工作量考虑,还是追求整体App内体验一致性,总会有有替换wap页面的元素替换成Native元素的需求.这其中,改动大收益高的方案就是 React Native和Weex了,以Re ...

  9. 原生js清空上一个元素内容_原生JS实现动态添加新元素、删除元素方法

    1. 添加新元素 动态添加新元素 Coffee Tea Coffee Tea var child = document.getElementsByClassName("child" ...

最新文章

  1. 【C#食谱】【杭帮菜】菜单2:写一个TCP客户端
  2. c#设置软件开机自动运行,修改注册表
  3. python Intel Realsense D435 图像自动采集程序 自动剔除模糊图像
  4. {}是set类型还是dict类型呢
  5. Hessian 源码简单分析
  6. integer对应java类型_Java中的Integer和int等包装类和基本数据类型简单比较
  7. Python开发【第二篇】:Python基本数据类型
  8. Glib2:error: Installed (but unpackaged) files found(七)
  9. (转)全球3.4万亿美元ETF蓝海,我们还在末尾 且听全球第二大团队讲真经
  10. linux内存泄露检查工具
  11. 计算机英语名词解释之软件工程篇
  12. 制作海报,你一定会用到的这些工具网站
  13. 码农架构 | Spring Boot 实现通用 Auth 认证的 4 种方式
  14. Jmeter插件安装perfmon(服务器资源监控工具)
  15. JS的map()方法会改变原始数组吗?
  16. 如何简单的生成rss地址_什么是RSS(真正的简单企业联合组织)?
  17. Atitit.团队文化建设------影响组织的的一些原理 法则 定理 效应 p826.v4
  18. ffmpeg解析视频的每一帧(java )
  19. 期货与现货结合(期货与现货结合的例子)
  20. 利用html设置嵌套式表格,表格嵌套 HTML

热门文章

  1. .NET APlayer播放器 demo
  2. 代理服务器Tengine的研究与测试
  3. 软件外包业的崛起,掀起电脑培训热潮
  4. oracle 游标(学校)
  5. c char转int_c/c++基础之sizeof用法
  6. gradle和maven区别
  7. 判读一个对象不为空_ArrayList实现分析(一)——对象创建
  8. web 前端 如何分享到instagram_如何找到靠谱的Web培训机构?web前端培训机构哪个好?...
  9. [转载] python循环中break、continue 、exit() 、pass的区别
  10. 紫外线的形式是什么?