pandas 对数据帧DataFrame中数据的增删、补全及转换操作
1、创建数据帧
import pandas as pd df = pd.DataFrame([[1, 'A', '3%' ], [2, 'B'], [3, 'C', '5%']], index=['row_0', 'row_1', 'row_2'], columns=['col_0', 'col_1', 'col_2'])
2、增加行、列
数据帧DataFrame的每一行都可看作是一个对象,每一列都是该对象的不同属性。每行都具有多维度的属性,因此每行都可以看作是一个小的DataFrame;而每列的数据类型都相同,因此每列都可以看作是一个Series。
2.1 增加行
创建新的DataFrame追加至原有数据帧的尾部,即可实现行的增加。通过df.append()实现行的追加。
# 创建新的数据帧
df_row3 = pd.DataFrame([[4, 'D', '9%']], index=['row_3'], columns=['col_0', 'col_1', 'col_2'])
# 追加至原有数据帧尾部
df = df.append(df_row3)
2.2 增加列
创建新的Series追加至原有数据帧的尾部,即可实现列的增加。
# 创建新系列作为新追加的列
df['col_4'] = pd.Series(['!', '@', '$', '&'], index=['row_0', 'row_1', 'row_2', 'row_3'])
3、删除行、列
3.1 删除行
通过向df.drop()中传入行索引实现对行的删除。
# 删除最后一行
df = df.drop('row_3')
3.2 删除列
通过del 或df.pop() 删除索引值对应的列。
# del df['col_4'],删除最后一列,与下句代码等价
df.pop('col_4')
注意:df.pop()实现了对df的删除操作,其返回值是被删除的列,而不是新的df。
4、数据补全
可以看出,row_1行,col_2列对应位置的元素为空,在实际计算过程中,需对空数据进行补全。可通过df.fillna()对df的空数据进行补全,这里以补0为例。
# df.fillna(0, inplace=True),就地补0,与下句代码等价
df = df.fillna(0)
5、元素转换
可以看出,在col_2列中的‘3%’及‘5%’均为有效的数值数据,但其类型均为‘str’,不能直接参与数学运算。需遍历df,找出其在df中的位置,将其替换为float型数据。
for i in range(len(df.index)):
for j in range(len(df.columns)):
# df中元素各种类型都有,为了方便检测其中是否含有‘%’,将其统一转换为‘str’型
if '%' in str(df.iat[i, j]):
df.iat[i, j] = float(df.iat[i, j].replace('%', '')) / 100
pandas 对数据帧DataFrame中数据的增删、补全及转换操作的更多相关文章
- pandas 对数据帧DataFrame中数据的索引及切片操作
1.创建数据帧 index是行索引,即每一行的名字:columns是列索引,即每一列的名字.建立数据帧时行索引和列索引都需要以列表的形式传入. import pandas as pd df = pd. ...
- Android(java)学习笔记186:对ListView等列表组件中数据进行增、删、改操作
1.ListView介绍 解决大量的相似的数据显示问题 采用了MVC模式: M: model (数据模型) V: view (显示的视图) C: controller 控制器 入门案例: acit ...
- Android(java)学习笔记129:对ListView等列表组件中数据进行增、删、改操作
1. ListView介绍 解决大量的相似的数据显示问题 采用了MVC模式: M: model (数据模型) V: view (显示的视图) C: controller 控制器 入门案例: aci ...
- Python中tab键自动补全功能的配置
新手学习Python的时候,如何没有tab键补全功能,我感觉那将是一个噩梦,对于我们这种菜鸟来说,刚接触python,对一切都不了解,还好有前辈们的指导,学习一下,并记录下来,还没有学习这个功能小伙伴 ...
- pandas,对dataFrame中某一个列的数据进行处理
背景:dataFrame的数据,想对某一个列做逻辑处理,生成新的列,或覆盖原有列的值 下面例子中的df均为pandas.DataFrame()的数据 1.增加新列,或更改某列的值 df[&qu ...
- pandas | 如何在DataFrame中通过索引高效获取数据?
本文始发于个人公众号:TechFlow,原创不易,求个关注 今天是pandas数据处理专题的第四篇文章,我们一起来聊聊DataFrame中的索引. 上一篇文章当中我们介绍了DataFrame数据结构当 ...
- pandas | 详解DataFrame中的apply与applymap方法
本文始发于个人公众号:TechFlow,原创不易,求个关注 今天是pandas数据处理专题的第5篇文章,我们来聊聊pandas的一些高级运算. 在上一篇文章当中,我们介绍了panads的一些计算方法, ...
- vim中设置Python自动补全
转自:http://blog.csdn.net/wangzhuo_0717/article/details/6942428 在VIM里面增加python的autocomplete功能的做法如下: 1. ...
- [转载]启用 VIM 中的 Python 自动补全及提示功能
转载: http://zhongwei-leg.iteye.com/blog/941474 周围的同事不喜欢使用 VIM 写 Python 代码的原因之一就是,VIM 不能像 Visual Studi ...
随机推荐
- 集成学习之Boosting —— AdaBoost原理
集成学习大致可分为两大类:Bagging和Boosting.Bagging一般使用强学习器,其个体学习器之间不存在强依赖关系,容易并行.Boosting则使用弱分类器,其个体学习器之间存在强依赖关系, ...
- c#Socket客户端和服务端的信息发送
这是我制作的界面信息,c# Socket通信的简单使用,刚开始学习,不对的地方请大家指教,目前是可以运行的,之后自己在慢慢添加新的东西.同时了解Tcp协议的三次握手.希望对跟我一样的初学者有所帮助. ...
- 更改eclipse的编辑器样式风格
这里提供两种方法: 1.从网站http://eclipsecolorthemes.org/ 下载,选好自己喜欢的风格后下载epf文件...再使用eclipse的import->preferenc ...
- 纯CSS打造进度条
进度条效果如下: CSS部分 body { background-color: white; } .progress-bar { display: flex; flex-direction: row; ...
- VMware下对Ubuntu进行扩充磁盘大小
今天用虚拟机的时候,发现虚拟机快满了,提示磁盘空间小,不得不扩充虚拟机空间.经过百度搜索,终于搞定了,记录如下 平台:VMware(10.0.3)+Ubuntu 14.04(32bit) 1.选择VM ...
- in_flight_pqueue.go
// right child } if (*pq)[j].pri >= (*pq)[i].pri { break } ...
- bzoj 1426 收集邮票
f[i]:当前已拥有i种邮票,还需要买的邮票数的期望值. g[i]:当前已拥有i种邮票,还需要的钱的期望值. 每张邮票初始都是1元钱,每买一张邮票,还没购买的邮票每张都涨价1元. f[i]=1+(n ...
- BZOJ_3174_[Tjoi2013]拯救小矮人_贪心+DP
BZOJ_3174_[Tjoi2013]拯救小矮人_贪心+DP Description 一群小矮人掉进了一个很深的陷阱里,由于太矮爬不上来,于是他们决定搭一个人梯.即:一个小矮人站在另一小矮人的 肩膀 ...
- Guess 任意猜
age_of_oldboy = 56 count = 0 while count <3: guess_age = int(input("guess age:")) if gu ...
- selenium 元素(class_name、link_text、css_selector)定位方法
通过元素的定位,使用firebug查找元素 1.示例一,class_name与link_text定位