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'])
例子里面行名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包含,因此不推荐。
总结下来就是:(重点!!!!)
- 推荐使用iloc和loc,其他方式均不推荐。
- 取行可以不提列,取列必须提行。
- 可以用一个数字,一个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取元素方法总结相关推荐
- python dataframe取行列_dataframe取元素方法总结
dataframe是pandas包的重要对象,熟练掌握dataframe的基本操作是很有必要的. 下面就总结一下dataframe取行列元素的基本操作. 一. DataFrame的基本结构 可以理解为 ...
- dataframe 空值替换为0_Python数据结构大结局:DataFrame
前一篇文章提到了序列,可以理解为Excel里没有列名的一列数据,那么Excel里的由行列组成的表数据是如何对应到Python中的呢?就是今天要说的数据框:DataFrame. 它是由一组数据和一对索引 ...
- DataFrame修改某列的取值(方法:map字典映射和嵌套if,else语句)
文章目录 Map字典映射 if else 嵌套重新赋值 关于map()和匿名函数lambda 在将两种类型数据合并的时候,由于版本不同导致某一列中取值不同,因此在行转列进行统计的时候先要对齐.修改列值 ...
- dataframe 空值替换为0_缓解Pandas中DataFrame占用内存过高
0 背景 在我们使用pandas进行数据处理的时候,有时候发现文件在本地明明不大,但是用pandas以DataFrame形式加载内存中的时候会占用非常高的内存,本文即解决这样的问题. 1 原因 如果是 ...
- dataframe 空值替换为0_Python数据分析:Pandas之DataFrame
内容目录 DataFrame简介 DataFrame创建方式 DataFrame索引和切片 DataFrame属性 DataFrame级联与合并 DataFrame基本操作 DataFrame分组聚合 ...
- python中各种序列/容器的索引、切片小结;如何取得可迭代对象中的element?如何取元素?
目录 一.python中的各种序列/容器指哪些? 二.如何取用list列表中的元素? 三.如何取用tuple元组中的元素? 四.如何取用ndarray数组中的元素? 五.如何取用dict字典中的元素? ...
- python中的输出list中元素方法_python 输出所有列表元素的乘积
def multiply_list(items): tot = 1 for x in items: tot *= x return tot print(multiply_list([1,2,-8])) ...
- html标签一对一绑定的组件,一种原生组件替换HTML标签的轻量级方法尝试
不管是从出于性能.开发工作量考虑,还是追求整体App内体验一致性,总会有有替换wap页面的元素替换成Native元素的需求.这其中,改动大收益高的方案就是 React Native和Weex了,以Re ...
- 原生js清空上一个元素内容_原生JS实现动态添加新元素、删除元素方法
1. 添加新元素 动态添加新元素 Coffee Tea Coffee Tea var child = document.getElementsByClassName("child" ...
最新文章
- 【C#食谱】【杭帮菜】菜单2:写一个TCP客户端
- c#设置软件开机自动运行,修改注册表
- python Intel Realsense D435 图像自动采集程序 自动剔除模糊图像
- {}是set类型还是dict类型呢
- Hessian 源码简单分析
- integer对应java类型_Java中的Integer和int等包装类和基本数据类型简单比较
- Python开发【第二篇】:Python基本数据类型
- Glib2:error: Installed (but unpackaged) files found(七)
- (转)全球3.4万亿美元ETF蓝海,我们还在末尾 且听全球第二大团队讲真经
- linux内存泄露检查工具
- 计算机英语名词解释之软件工程篇
- 制作海报,你一定会用到的这些工具网站
- 码农架构 | Spring Boot 实现通用 Auth 认证的 4 种方式
- Jmeter插件安装perfmon(服务器资源监控工具)
- JS的map()方法会改变原始数组吗?
- 如何简单的生成rss地址_什么是RSS(真正的简单企业联合组织)?
- Atitit.团队文化建设------影响组织的的一些原理 法则 定理 效应 p826.v4
- ffmpeg解析视频的每一帧(java )
- 期货与现货结合(期货与现货结合的例子)
- 利用html设置嵌套式表格,表格嵌套 HTML
热门文章
- .NET APlayer播放器 demo
- 代理服务器Tengine的研究与测试
- 软件外包业的崛起,掀起电脑培训热潮
- oracle 游标(学校)
- c char转int_c/c++基础之sizeof用法
- gradle和maven区别
- 判读一个对象不为空_ArrayList实现分析(一)——对象创建
- web 前端 如何分享到instagram_如何找到靠谱的Web培训机构?web前端培训机构哪个好?...
- [转载] python循环中break、continue 、exit() 、pass的区别
- 紫外线的形式是什么?