pandas.DataFrame新增列、dropna()方法-丢弃含空值的行、列;inf的处理技巧

在Dataframe中新添加一列

直接指明列名,然后赋值就可

import pandas as pddata = pd.DataFrame(columns=['a','b'], data=[[1,2],[3,4]])
data
>>> dataa  b
0  1  2
1  3  4

添加一列’c‘,赋值为空白值。打印出来

data['c'] = ''
data
>>> dataa  b c
0  1  2
1  3  4

添加一列‘d',赋值为一个list

data['d'] = [5,6]
data
>>> dataa  b c  d
0  1  2    5
1  3  4    6

在指定的位置添加新的一列,可以使用insert( )方法。

分别在原来的dataframe的开始和最后添加两列 ’c' 和 ‘d'。参数链接

data.insert(2,'c','')
# 2 :插入的列的位置
# ‘c':待插入列的列名
# ‘ ’:插入的值,这里插入的是空值data
Out[56]: a  b c
0  1  2  
1  3  4  
data.insert(0,'d',[1,2])data
Out[71]: d  a  b c
0  1  1  2  
1  2  3  4  

 pandas.DataFrame 进行新增列操作的五种方法:insert、reindex、loc、obj[‘col’]、concat

新建

import pandas as pd
import numpy as npdata = pd.DataFrame(np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]), columns=['a', 'b', 'c'])
dataa 	b 	c0 	1 	2 	31 	4 	5 	62 	7 	8 	9

insert方法

第一个参数指定插入列的位置,

第二个参数指定插入列的列名,

第三个参数指定插入列的数据

data.insert(data.shape[1], 'd', 0)
dataa 	b 	c 	d0 	1 	2 	3 	01 	4 	5 	6 	02 	7 	8 	9 	0

obj[‘col’] = value 方法

对 DataFrame 直接赋值

data['d'] = 0
dataa 	b 	c 	d0 	1 	2 	3 	01 	4 	5 	6 	02 	7 	8 	9 	0

reindex 方法

使用 reindex 函数,还可以指定缺失值填充的值,不过缺点是要把原有的列名和新列名都加上

data = data.reindex(columns=['a', 'b', 'c', 'd'], fill_value=0)
dataa 	b 	c 	d0 	1 	2 	3 	01 	4 	5 	6 	02 	7 	8 	9 	0

concat 方法

concat 方法是用来拼接数据的,

在这里是利用拼接过程中新建一个包含新列名的空DataFrame,

好处是可以同时新增多个列名。

data = pd.concat([data, pd.DataFrame(columns=['d'])], sort=False)
dataa 		b 		c 		d0 	1.0 	2.0 	3.0 	NaN1 	4.0 	5.0 	6.0 	NaN2 	7.0 	8.0 	9.0 	NaN

loc 方法

loc 方法和 iloc 方法一样,可以索引 DataFrame 数据,

一般是通过 data.loc[index, col] = value 来进行赋值,

这里利用:来索引全部行再进行赋值。

data.loc[:, 'd'] = 0
dataa 	b 	c 	d0 	1 	2 	3 	01 	4 	5 	6 	02 	7 	8 	9 	0

Python-pandas的dropna()方法-丢弃含空值的行、列

0.摘要

dropna()方法,能够找到DataFrame类型数据的空值(缺失值),

将空值所在的行/列删除后,将新的DataFrame作为返回值返回。

1.函数详解

函数形式:

​dropna(axis=0, how='any', thresh=None, subset=None, inplace=False)

参数:

axis:轴。0或'index',表示按行删除;1或'columns',表示按列删除。

how:筛选方式。‘any’,表示该行/列只要有一个以上的空值,就删除该行/列;

‘all’,表示该行/列全部都为空值,就删除该行/列。

thresh:非空元素最低数量。int型,默认为None。

如果该行/列中,非空元素数量小于这个值,就删除该行/列。

subset:子集。列表,元素为行或者列的索引。

如果axis=0或者‘index’,subset中元素为列的索引;

如果axis=1或者‘column’,subset中元素为行的索引。

由subset限制的子区域,是判断是否删除该行/列的条件判断区域。

inplace:是否原地替换。布尔值,默认为False。

如果为True,则在原DataFrame上进行操作,返回值为None。

dataframe中有关inf的处理技巧

numpy中inf的相关文档icon-default.png?t=N7T8https://numpy.org/devdocs/reference/constants.html#numpy.Inf 

什么是inf? IEEE 754浮点表示(正)无穷大。 

为什么会产生? 

>>> np.NINF-inf>>> np.infinf>>> np.log(0)-inf>>> np.array([1,2])/0 #碰到的最多的情况array([ inf,  inf])

产生inf有什么好处? 

目前没看到有什么好处,只是单纯用inf表示无穷大,方便理解和表示。 

产生inf有什么坏处? 

对用户而言,对inf需要特殊处理,加大了工作量。

为什么需要特殊处理?

因为许多机器学习算法库并不支持对inf的处理。 

怎么处理? 

常见的处理方法:  不处理替换,怎么获取到inf的所在位置并进行填补? 

'''
isinf:显示哪些元素为正或负无穷大isposinf:显示哪些元素为正无穷大isneginf:显示哪些元素为负无穷大isnan:显示哪些元素不是数字isfinite:显示哪些元素是有限的(不是非数字,正无穷大和负无穷大中的一个)'''
​
>>> np.isinf(np.inf) #其他函数同理使用,isinf使用最多。True>>> np.isinf(np.array([1,np.inf]))array([False,  True], dtype=bool)>>>np.isinf(pd.DataFrame(np.array([1,np.inf])))00  False1   True​
>>>s1 = pd.Series([1,2,3,np.inf])>>>s10    1.01    2.02    3.03    NaNdtype: float64

#对inf填补 999 

>>>s1[np.isinf(s1)] = 999>>>s10    1.01    2.02    3.03  999.0dtype: float64

#对inf填补np.nan (较为常用)

>>>s1[np.isinf(s1)] = np.nan>>>s10    1.01    2.02    3.03    NaNdtype: float64

Pandas 处理DataFrame中的inf值

1. 将某1列(series格式)中的 inf 替换为数值

import numpy as npdf['Col'][np.isinf(df['Col'])] = -1

2. 将某1列(series格式)中的 inf 替换为NA值

import numpy as npdf['Col'][np.isinf(df['Col'])] = np.nan

3. 将整个DataFrame中的 inf 替换为数值(空值同理)

import numpy as npdf.replace(np.inf, -1) #替换正inf为-1#替换正负inf为NA,加inplace参数 
df.replace([np.inf, -np.inf], np.nan, inplace=True)

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

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

相关文章

1255942-05-2,DBCO-C6-Amine,可以用于构建分子结构和生物活性分子

您好,欢迎来到新研之家 文章关键词:1255942-05-2,DBCO C6 NH2,DBCO-C6-Amine,二苯并环辛炔-C6-氨基 一、基本信息 【产品简介】:DBCO-C6-NH2 is a multifunctional molecule with excellent chemical re…

【王道操作系统】ch1计算机系统概述-05操作系统引导

文章目录 【王道操作系统】ch1计算机系统概述-05操作系统引导01 什么是操作系统引导02 磁盘里边有哪些相关数据(1)主引导记录(MBR)(2)活动分区(一般是C盘) 03 操作系统引导的过程 【…

如何创建MinIO存储服务公网地址实现固定TCP域名异地远程访问——“cpolar内网穿透”

文章目录 前言1. 创建Buckets和Access Keys2. Linux 安装Cpolar3. 创建连接MinIO服务公网地址4. 远程调用MinIO服务小结5. 固定连接TCP公网地址6. 固定地址连接测试 前言 MinIO是一款高性能、分布式的对象存储系统,它可以100%的运行在标准硬件上,即X86等…

每日一题 — 盛水最多的容器

11. 盛最多水的容器 - 力扣(LeetCode) 思路: 因为体积是长度乘高,所以运用双指针,一个在最左,一个在最右,每次都记录体积 V ,然后比较左边的长度和右边的长度,左边的长度…

【代码随想录算法训练营Day35】435.无重叠区间;763.划分字母区间;56.合并区间

文章目录 ❇️Day 36 第八章 贪心算法 part05✴️今日任务❇️435. 无重叠区间自己的思路自己的代码(✅通过81.59%)随想录思路随想录代码 ❇️763.划分字母区间自己的思路自己的代码(✅通过55.30%)随想录思路随想录代码 ❇️56. 合…

长/短 链接/轮询 和websocket

短连接和长连接 短连接: http协议底层基于socket的tcp协议,每次通信都会新建一个TCP连接,即每次请求和响应过程都经历”三次握手-四次挥手“优点:方便管理缺点:频繁的建立和销毁连接占用资源 长连接: 客…

Javaweb之SpringBootWeb案例之自动配置案例的自定义starter分析的详细解析

3.2.4.1 自定义starter分析 前面我们解析了SpringBoot中自动配置的原理,下面我们就通过一个自定义starter案例来加深大家对于自动配置原理的理解。首先介绍一下自定义starter的业务场景,再来分析一下具体的操作步骤。 所谓starter指的就是SpringBoot当…

java 多线程分段下载

java 多线程分段下载 介绍 使用java 多线程下载,当前只是一个demo,还没进行对比测试,目前看速度确实要快一些 实现和简单就是启用多个现成分段下载,最后再组合在一起 完整代码 原本是下载tomcat10的,但是我本地jdk不符&#…

机器人工具箱学习(二)

一、机械臂及运动学 1.1 机械臂构成 机械臂多采用关节式机械结构,一般具有6个自由度,其中3个用来确定末端执行器的位置,另外3个则用来确定末端执行装置的方向(姿态)。   如图所示,一个机械臂是由一组可做相对运动的关节连接的连…

Arduino应用开发——使用GUI-Guider制作LVGL UI并导入ESP32运行

Arduino应用开发——使用GUI-Guider制作LVGL UI并导入ESP32运行 目录 Arduino应用开发——使用GUI-Guider制作LVGL UI并导入ESP32运行前言1 使用GUI-Guider设计UI1.1 创建工程1.2 设计UI 2 ESP工程导入UI2.1 移植LVGL2.2 移植UI文件2.3 调用UI文件2.4 烧录测试 结束语 前言 GU…

二维码门楼牌管理系统技术服务:楼牌编设规则详解

文章目录 前言一、院落内新增楼栋的楼牌编制二、围合式或分片式建筑群的楼牌编设三、围合单位建筑内部的楼牌编制四、独栋单位建筑的楼牌编制五、无名称院落的楼牌编制六、同一裙楼上多栋楼房的楼牌编制 前言 随着城市建设的快速发展,门楼牌管理成为城市管理的重要…

山西电力市场日前价格预测【2024-02-27】

日前价格预测 预测说明: 如上图所示,预测明日(2024-02-27)山西电力市场全天平均日前电价为332.28元/MWh。其中,最高日前电价为544.59元/MWh,预计出现在19:00。最低日前电价为211.48元/MWh,预计…

如何在Linux使用Docker部署Redis并结合内网穿透实现公网远程连接本地数据库

文章目录 前言1. 安装Docker步骤2. 使用docker拉取redis镜像3. 启动redis容器4. 本地连接测试4.1 安装redis图形化界面工具4.2 使用RDM连接测试 5. 公网远程访问本地redis5.1 内网穿透工具安装5.2 创建远程连接公网地址5.3 使用固定TCP地址远程访问 正文开始前给大家推荐个网站…

还在手动Word转PPT?快来试试这些一键生成工具!

在我们日常的工作和学习中,将Word转化成PPT的需求时常出现,尤其是当我们需要进行演讲或者报告时。这不仅能使我们的演讲更具视觉冲击力,也有助于我们更好地传达信息。 那么,如何才能轻松地将Word转换成PPT呢?下面将为…

商家转账到零钱功能申请方法

商家转账到零钱是什么? 【商家转账到零钱】可以说是【企业付款到零钱】的升级版,商家转账到零钱可以为商户提供同时向多个用户微信零钱转账的能力,支持分销返佣、佣金报酬、企业报销、企业补贴、服务款项、采购货款等自动向用户转账的场景。…

Intel 芯片 Mac 如何重新安装系统

使用可引导安装器重新安装(可用于安装非最新的 Mac OS,系统降级,需要清除所有数据,过程确保连接上网络,虽然这种方式不会下载 Mac OS,但是需要下载固件等信息) 插入制作好的可引导安装器&#x…

leetcode 热题 100_找到字符串中所有字母异位词

题解一&#xff1a; 滑动窗口&#xff1a;类似于字符串匹配&#xff0c;但匹配异位词需要包含相同的字母及个数&#xff0c;可以分别用两个数组存储字符串s滑动窗口和字符串p的字母及个数&#xff0c;再用Array.equals()进行比对。对于s.length()<p.length()的情况需要特判。…

【python】python用户管理系统[简易版](源码+报告)【独一无二】

&#x1f449;博__主&#x1f448;&#xff1a;米码收割机 &#x1f449;技__能&#x1f448;&#xff1a;C/Python语言 &#x1f449;公众号&#x1f448;&#xff1a;测试开发自动化【获取源码商业合作】 &#x1f449;荣__誉&#x1f448;&#xff1a;阿里云博客专家博主、5…

怎么异地共享文件?

不同地点的团队成员之间共享文件是现代企业中常见的需求之一。随着分布式团队的不断增加&#xff0c;找到一种安全、高效的方式来实现异地共享文件变得尤为重要。本文将介绍一种名为【天联】的工具&#xff0c;它可以帮助团队成员在异地互相共享文件。 【天联】是一种专门为异地…

Corel 会声会影 2023 激活码 会声会影 2023 序列号生成器

会声会影 2023 已经出来很长时间了&#xff0c;但是对它的热爱一直持续不减&#xff0c;今天我给大家带来2023版本为用户带来的多个全新功能&#xff0c;可以更好的编辑视频&#xff0c;不过软件还是付费的&#xff0c;为此我带来了会声会影 2023序列号生成器&#xff0c;可以轻…