dataframe 空值替换为0_dataframe取元素方法总结

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'])

ec76409f273b64b0f0515c4006c58bca.png

例子里面行名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行

44a6e3f73d58cefb07dbcda1e7506458.png

注意:只取一行的话,要用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目前已经被弃用,就不赘述了。

12d6a41a616cba77055e275d62cc41fe.png

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的行。

c2d180fa8a3d56ce21a889733447a144.png

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。

c86005aca276822851b59f8cb79b183e.png

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

9de095715292a43929d3f09f344bc095.png

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

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

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

cdd79cbfc3fd16330bd678439e564ab1.png

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

05ca4d25acc5ff8dc7569178c341d0e5.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/550668.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

bool python 运算_python中的布尔操作

点击以下链接可以快速访问全部我发表的Python相关文章:Nick WU:Nick WU的python文章目录(持续更新中...)​zhuanlan.zhihu.com1. Python中的布尔值Python中任何对象都有一个固定的布尔值,即非零、非空的对象为真&#…

软件工程环形复杂度计算方法有哪些_软件工程复习6165组考题

黑色字体为原本答案,蓝色字体修改补充了复习题组「61-65/61-65/13/13」一、名词解释61.确认测试检查已实现的软件是否满足了需求规格说明中所确定的各种需求,以及软件配置是否完全、正确。(过程:功能性测试---软件配置复查---验收测试----α测…

多线程导出excel高并发_大牛带你深入java多线程与高并发:JMH与Disruptor,确定能学会?...

前言今天我们讲两个内容,第一个是JMH,第二个是Disruptor。这两个内容是给大家做更进一步的这种多线程和高并发的一些专业上的处理。生产环境之中我们很可能不自己定义消息队列,而是使用Disruptor。我们生产环境做测试的时候也不是像我说的那样…

动环监控系统接线图_机房动环监控系统报价

原标题:机房动环监控系统报价机房动环监控系统报价需要根据业务需求来进行报价的,一般机房动环监控系统的价格跟机房的监控面积的大小以及监控的项目是息息相关的,比如一个IDC机房和小型的基站机房的动环监控系统的价格就是完全不一样&#x…

Ubuntu 下PySpark安装

操作系统:Ubuntu20.04所需软件: Java 8 ,Python 3.5 , Scala 2.11.12安装Java 8 sudo apt-get updatesudo apt-get install openjdk-8-jdkjava -version安装scalasudo wget https://downloads.lightbend.com/scala/2.12.8/scala-2.12.8.deb …

数据集_自动驾驶数据集

前面介绍了自动驾驶的仿真平台,接下来又收集了目前主要的自动驾驶数据集。抱着这个想法,何不做一个awesome,在git上搜索,已经有人建了一个awesome了,也免得重复造轮子。但是作者很久没更新了,于是决定也加入…

rdd.foreach(print)报错SyntaxError: invalid syntax

问题 解决方法from __future__ import print_function如图:

地铁框架保护的原理_继电保护的基础知识和原理(地铁)

1.继电保护技术发展简史上世纪60年代以前,我国的继电保护主要由传统的机电型继电器构成,其中包括了电磁型继电器和感应型继电器。60年代末70年代初,晶体管保护和整流型保护得到了应用。90年代起,集成电路保护和微机型保…

golang如何生成随机数

目录如何生成随机数示例:未写随机数种子:加上随机数种子后:如何生成随机数 在go语言中,生成随机数需要先添加一个***随机数种子***,否则每次运行生成的随机数都是同样顺序的数字 rand.Seed(time.Now().UnixNano()) r…

golang基础学习笔记

golang基础学习golang1. 认识golang和goland使用1.1 goland插件2. 数据类型2.1 结构体3. 流程控制ifswitchselectforrangeGoto、Break、Continue4. 函数4.1 匿名函数4.2 闭包、递归4.3 延迟调用什么是deferdefer的常见用途释放已经获取的资源从panic中恢复延迟闭包参数即时求值…

git@github.com:Permission denied(publickey).fatal: Could not read form remote repository错误

文章目录前言问题分析解决方法配置客户端配置服务端验证前言 在使用goland从github下载依赖时(git clone github.com/gin-gonic/gin)出现gitgithub.com:Permission denied(publickey).fatal: Could not read form remote repository错误。 问题分析 Permission denied(publi…

go出现missing go.sum entry for module providing package 错误

文章目录前言问题分析解决方法前言 从github下载了别人的代码后直接执行,报missing go.sum entry for module providing package错误 问题分析 代码中使用了第三方库,但是go.mod并没有跟着更新 解决方法 在项目目录下打开终端,执行go mo…

的计时器设置_如何选择最适合自己的计时器?

本文作者是Ultraman,他为了找到最适合自己的计时方法,试验了十多种计时器或者沙漏,总结出了非常棒的经验!相信本文一定会对你有所帮助。 ——李长太大家对番茄工作法一定已经不陌生了,那么进行番茄工作法的时候&#x…

npm install报错 npm ERR,code ERESOLVE npm ERR,ERESOLVE unable to resolve dependency tree

文章目录前言问题分析解决方法转载于前言 在下载npm时报错npm ERR! code ERESOLVE npm ERR! ERESOLEVE unable to resolve dependency tree 问题分析 我的npm版本为8.x,npm6.x之后的版本更加严格了,所以会报错 解决方法 方法1,降级到np…

卡顿严重_微软Win 10游戏模式致《使命召唤:战区》等游戏出现严重卡顿现象

IT之家5月8日消息 据Windowslatest报道,有部分用户报告称Windows 10游戏模式可能对某些硬件的游戏性能产生负面影响。一位用户表示,启用游戏模式后,搭载Radeon RX 5700 XT、RX 480、R9 290等AMD显卡设备以及GTX 980和GTX 1080 Ti等Nvidia显卡…

MySQL的MVCC是什么

文章目录MVCC是什么MVCC的作用MVCC的实现原理Read View是什么Read View如何判断某个版本可以访问MVCC是什么 MVCC(Multiversion concurrency control)是同一行数据保留多版本的一种方式,进而实现并发控制。 在查询时,通过read view和版本链找到对应版本…

go中make、new和直接var的区别

文章目录直接varmakenew小结直接var func main(){var sli []intfmt.Println(sli) // 打印结果为:[]fmt.Println(len(sli)) // 打印结果为:0fmt.Println(cap(sli)) // 打印结果为:0fmt.Println(sli[0]) // panic: index out of…

论述类文本知识框架_高考语文“论述类文本阅读”:三步走,拿满分

【原创首发】新的学期开始了。高三的定位考试也结束了。成绩下来了,有的同学拿着卷子找着我:“老师,你看看,我第一道大题三道错了两道,咋办呀?”高考语文试卷的第一大道试题”论述类文本阅读“这道题&#…

mysql数据自定义随机_Mysql 自定义随机字符串

前几天在开发一个系统,需要用到随机字符串,但是mysql的库函数有没有直接提供,就简单的利用现有的函数东拼西凑出随机字符串来.下面简单的说下实现当时.1.简单粗暴.select ..., substring(MD5(RAND()),floor(RAND()*26)1,6) as rand_str .....…

php连接mysql乱码原因_PHP连接MYSQL出现乱码的原因与解决办法

PHP连接mysql出现乱码的原因与解决方法解决MySql数据库乱码的一个首要前提是保证 数据库数据表前端显示 编码一致,国内项目一般统一设定为GB2312或GBK,而国际化项目则一般使用utf8。另外,字符集设定完毕之后记得重启目标机MySql服务。PHP连接…