当前位置: 首页 > news >正文

Python处理空值NaN

fork_address_temp=read_excel_column_to_list('./eqp_info.xls','Sheet1','车辆地址')for i in fork_address_temp:print(type(i))fork_address=[0 if address =='nan' else address for address in fork_address_temp]fork_address
结果
<class 'float'><class 'float'><class 'float'><class 'float'><class 'float'><class 'float'><class 'float'><class 'float'><class 'float'><class 'float'><class 'float'><class 'str'><class 'float'><class 'float'><class 'float'><class 'float'><class 'float'><class 'float'><class 'float'><class 'float'><class 'float'><class 'float'><class 'float'><class 'float'><class 'float'><class 'float'><class 'float'><class 'float'><class 'float'><class 'float'><class 'float'><class 'float'><class 'float'>Out[37]:[nan,nan,nan,nan,nan,nan,nan,nan,nan,nan,nan,'10.7.132.27',nan,nan,nan,nan,nan,nan,nan,nan,nan,nan,nan,nan,nan,nan,nan,nan,nan,nan,nan,nan]

没有达到我需要的效果,把NaN值处理为0

尝试从 Excel 文件中读取地址,并将所有的 ‘nan’ 替换为 0。然而,根据代码,似乎替换并没有按预期进行。以下是逐步解释正在发生的情况:

  1. 您使用 read_excel_column_to_list('./eqp_info.xls','Sheet1','车辆地址') 从 Excel 文件中读取了 ‘车辆地址’ 列。

  2. 然后,您遍历了 fork_address_temp 中的每个项,并打印了每个项的类型。输出显示大多数项的类型是 ‘float’,只有一个项的类型是 ‘str’(可能是具有值 ‘10.7.132.27’ 的地址)。

  3. 您尝试使用列表推导式创建了一个名为 fork_address 的新列表。对于 fork_address_temp 中的每个 address,您试图使用表达式 0 if address == 'nan' else address 将 ‘nan’ 替换为 0。

问题在于,您将 address 与字符串 'nan' 进行了比较。然而,当 Excel 读取空单元格时,通常会将它们表示为实际的 NaN(非数字)值,而不是字符串 ‘nan’。这就是为什么您的比较不起作用,替换没有按预期进行的原因。

为了解决这个问题,您应该将以下这行代码:

fork_address=[0 if address =='nan' else address for address in fork_address_temp]

替换为:

fork_address = [0 if isinstance(address, float) and math.isnan(address) else address for address in fork_address_temp]

请确保在代码开头导入 math 模块:

import math

通过这种方式,您将检查地址是否为 NaN 浮点值,并将其替换为 0。以下是更新后的代码片段:

import mathfork_address_temp = read_excel_column_to_list('./eqp_info.xls', 'Sheet1', '车辆地址')fork_address = [0 if isinstance(address, float) and math.isnan(address) else address for address in fork_address_temp]fork_address

这应该会得到您所期望的结果,其中 fork_address 列表中的 NaN 值将被替换为 0。

math需要单独安装吗?

不需要单独安装 math 模块,因为它是 Python 的内置模块,已经包含在标准库中。你可以直接在代码中导入并使用它,无需额外安装任何东西。

在使用 math 模块中的函数之前,只需要在代码中导入它即可:

import math# 然后就可以使用 math 模块中的函数了

这样,你就可以在你的代码中使用 math.isnan() 等函数来处理数学计算中的 NaN 值。

处理结果

[0,0,0,0,0,0,0,0,0,0,0,'10.7.132.27',0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]

如何实现fork_num_temp与fork_address一一对应

要确保 fork_num_tempfork_address 一一对应,您可以使用内置的 zip 函数来将这两个列表合并为一个元组的列表,其中每个元组包含 fork_num_temp 和对应的 fork_address。这样,您就可以一次迭代处理这两个列表,确保它们保持一一对应的关系。以下是如何实现的示例代码:

fork_num_temp = read_excel_column_to_list('./eqp_info.xls', 'Sheet1', '车辆编号')
fork_address_temp = read_excel_column_to_list('./eqp_info.xls', 'Sheet1', '车辆地址')import mathfork_address = [0 if isinstance(address, float) and math.isnan(address) else address for address in fork_address_temp]# 确保 fork_num_temp 和 fork_address 一一对应
fork_data = list(zip(fork_num_temp, fork_address))# 打印合并后的列表
for fork_num, address in fork_data:print(f"Fork Num: {fork_num}, Address: {address}")

在这个示例中,fork_data 是一个列表,其中每个元素是一个包含 fork_num_tempfork_address 的元组。通过在这个列表上迭代,您可以同时访问对应的车辆编号和地址。

请注意,这个示例假设 fork_num_tempfork_address_temp 具有相同的长度,以便可以一一对应。如果长度不同,这种方法可能会导致信息丢失。

设计一个函数,我根据fork_num查询fork_data,返回对应的addres

当您需要根据 fork_num 查询 fork_data 并返回对应的地址时,可以编写一个函数来实现这个功能。下面是一个示例函数:

def find_address_by_fork_num(fork_data, target_fork_num):for fork_num, address in fork_data:if fork_num == target_fork_num:return addressreturn None  # 如果找不到对应的地址,返回 None 或其他适当的值# 示例数据
fork_num_temp = ['F1', 'F2', 'F3']
fork_address_temp = ['Address1', 'Address2', 'Address3']
fork_address = [0 if isinstance(address, float) and math.isnan(address) else address for address in fork_address_temp]
fork_data = list(zip(fork_num_temp, fork_address))# 调用函数来查询地址
target_fork_num = 'F2'
found_address = find_address_by_fork_num(fork_data, target_fork_num)if found_address is not None:print(f"The address for fork number {target_fork_num} is {found_address}")
else:print(f"No address found for fork number {target_fork_num}")

在这个示例中,find_address_by_fork_num 函数接受一个 fork_data 列表和一个目标 fork_num 作为参数。它会遍历 fork_data,找到匹配的 fork_num 并返回对应的地址。如果找不到匹配的 fork_num,函数会返回 None 或其他适当的值。

请根据您的实际数据和需求调整代码中的示例数据和函数调用部分。

相关文章:

Python处理空值NaN

fork_address_tempread_excel_column_to_list(./eqp_info.xls,Sheet1,车辆地址)for i in fork_address_temp:print(type(i))fork_address[0 if address nan else address for address in fork_address_temp]fork_address结果 <class float><class float><class…...

软件机器人助力交通运输局数据录入,实现高效管理

随着科技的迅速发展&#xff0c;许多传统的行业正在寻求通过科技创新优化工作流程、提升效率。在这样的大背景下&#xff0c;交通运输部门也开始注重引入科技手段改善工作流程。博为小帮软件机器人正逐步改变着交通运输局的工作方式。 软件机器人&#xff1a;交通管理的利器 博…...

时序分解 | MATLAB实现基于SGMD辛几何模态分解的信号分解分量可视化

时序分解 | MATLAB实现基于SGMD辛几何模态分解的信号分解分量可视化 目录 时序分解 | MATLAB实现基于SGMD辛几何模态分解的信号分解分量可视化效果一览基本介绍程序设计参考资料 效果一览 基本介绍 SGMD分解算法&#xff08;辛几何模态分解&#xff09;&#xff0c;分解结果可视…...

FinalShell报错:Swap file “.docker-compose.yml.swp“ already exists

FinalShell中编辑docker-compose.yml文件&#xff0c;保存时报错&#xff1a;Swap file ".docker-compose.yml.swp" already exists&#xff1b;报错信息截图如下&#xff1a; 问题原因&#xff1a;有人正在编辑docker-compose.yml文件或者上次编辑没有保存&#xff…...

卷积过程详细讲解

1&#xff1a;单通道卷积 以单通道卷积为例&#xff0c;输入为&#xff08;1,5,5&#xff09;&#xff0c;分别表示1个通道&#xff0c;宽为5&#xff0c;高为5。假设卷积核大小为3x3&#xff0c;padding0&#xff0c;stride1。 卷积过程如下&#xff1a; 相应的卷积核不断…...

代码随想录第五十六天

代码随想录第五十六天 Leetcode 583. 两个字符串的删除操作Leetcode 72. 编辑距离 Leetcode 583. 两个字符串的删除操作 题目链接: 两个字符串的删除操作 自己的思路:想到了&#xff0c;但是初始化初始错了&#xff01;&#xff01;&#xff01;&#xff01; 思路1:直接动规五…...

.NET 最便捷的Log4Net日志记录器

最便捷的Log4Net使用方法 LOG4NET 配置日志记录器开始引用nuget LOG4NET 配置日志记录器 Apache log4net 库是一个帮助程序员将日志语句输出到各种的工具 的输出目标。log4net是优秀的Apachelog4j™框架的移植 Microsoft.NET 运行时。我们保持了与原始log4j相似的框架 同时利…...

深入探讨软件逆向工程:解密黑盒的奥秘

引言 逆向工程作为计算机科学领域中的一项关键技术&#xff0c;扮演着解密、漏洞分析、反病毒等诸多领域的重要角色。本文将深入探讨逆向工程的概念、应用领域以及一些常用的逆向工程技术。 什么是逆向工程&#xff1f; 逆向工程是指通过分析已有的程序或设备&#xff0c;推…...

利用tidevice+mysql+grafana实现ios性能测试

利用tidevicemysqlgrafana实现ios性能测试 1.什么是tidevice&#xff1f; tidevice是一个可以和ios设备进行通信的工具&#xff0c;提供以下功能&#xff1a; 截图获取手机信息ipa包的安装和卸载根据bundleID 启动和停止应用列出安装应用信息模拟Xcode运行XCTest&#xff0c…...

内网安全:WMI协议与SMB协议横向移动

目录 网络拓扑图 网络环境说明 WMI协议 SMB协议 域内信息收集 WMI协议 - 横向移动 利用方式一&#xff1a;wmic命令 利用方式一&#xff1a;cscript 利用方式一&#xff1a;impacket SMB协议 - 横向移动 利用方式一&#xff1a;psexec 利用方式二&#xff1a;psexe…...

05-Numpy基础-用于数组的文件输入输出

np.save和np.load是读写磁盘数组数据的两个主要函数。默认情况下&#xff0c;数组是以未压缩的原始二进制格式保存在扩展名为.npy的文件中的&#xff1a; 如果文件路径末尾没有扩展名.npy&#xff0c;则该扩展名会被自动加上。然后就可以通过np.load读取磁盘上的数组&#xff1…...

Docker微服务实战

文章目录 业务需求IDEA编写代码编写Dockerfile构建镜像运行容器网页端访问测试 业务需求 利用Docker部署应用服务&#xff0c;实现在网页端通过输入地址 ip:端口/hello/docker&#xff0c;页面显示hello docker ! IDEA编写代码 创建springboot项目 网上很多教程,此步骤省略……...

NLNet论文总结和代码实现

Non-local Neural Networks&#xff08;非局部神经网络&#xff09;&#xff1a;使用自注意力机制捕获远程依赖。 论文&#xff1a; https://arxiv.org/pdf/1711.07971.pdf 源码&#xff1a; 长距离依赖关系&#xff0c;顾名思义&#xff0c;是要和远程建立关系&#xff0c;在l…...

数字 IC 设计职位经典笔/面试题(三)

共100道经典笔试、面试题目&#xff08;文末可全领&#xff09; 1. IC 设计中同步复位与异步复位的区别&#xff1f; 同步复位在时钟沿变化时&#xff0c;完成复位动作。异步复位不管时钟&#xff0c;只要复位信号满足条件&#xff0c;就完成复位动作。异步复位对复位信号要求…...

Matlab分割彩色图像

彩色图像 彩色图像除有亮度信息外&#xff0c;还包含有颜色信息。以最常见的RGB&#xff08;红绿蓝&#xff09;彩色空间为例来简要说明彩色图像&#xff1a; 彩色图像可按照颜色的数目来划分。例如&#xff0c;256色图像和真彩色图像&#xff08;2的16次方&#xff1d;21677…...

[数据集][目标检测]垃圾目标检测数据集VOC格式14963张44类别

数据集格式&#xff1a;Pascal VOC格式(不包含分割的txt文件&#xff0c;仅仅包含jpg图片和对应的xml) 图片数量(jpg文件个数)&#xff1a;14963 标注数量(xml文件个数)&#xff1a;14963 标注类别数&#xff1a;44 标注类别名称:["toiletries","plastic utensi…...

MATLAB算法实战应用案例精讲-【深度学习】推荐系统模型DSSMDeepFM

目录 前言 DSSM 输入层 英文 中文 表示层 匹配层 优缺点 DeepFM模...

基于springboot的社区生活缴费系统/基于javaweb的水电缴费系统

摘 要 网络的广泛应用给生活带来了十分的便利。所以把社区生活缴费管理与现在网络相结合&#xff0c;利用java语言建设社区生活缴费系统&#xff0c;实现社区生活缴费管理的信息化。则对于进一步提高社区生活缴费管理发展&#xff0c;丰富社区生活缴费管理经验能起到不少的促进…...

Linux —— keepalived

简介 Keepalived 是一个用 C 语言编写的路由软件。这个项目的主要目标是为 Linux 系统和基于 Linux 的基础设施提供简单而强大的负载均衡和高可用性功能。 Keepalived 开源并且免费的软件。 Keepalived 的2大核心功能 1. loadbalance 负载均衡 LB&#xff1a;ipvs--》lvs软件…...

ubuntu安装pyenv

Pyenv是一种轻量级的Python版本管理工具&#xff0c;它可以让你在同一台机器上同时管理多个Python版本。这个工具对于开发者来说非常有用&#xff0c;因为在不同的项目中可能需要使用不同版本的Python。下面是在Ubuntu系统上安装pyenv&#xff0c;并配置环境变量的步骤&#xf…...

7.4.分块查找

一.分块查找的算法思想&#xff1a; 1.实例&#xff1a; 以上述图片的顺序表为例&#xff0c; 该顺序表的数据元素从整体来看是乱序的&#xff0c;但如果把这些数据元素分成一块一块的小区间&#xff0c; 第一个区间[0,1]索引上的数据元素都是小于等于10的&#xff0c; 第二…...

CTF show Web 红包题第六弹

提示 1.不是SQL注入 2.需要找关键源码 思路 进入页面发现是一个登录框&#xff0c;很难让人不联想到SQL注入&#xff0c;但提示都说了不是SQL注入&#xff0c;所以就不往这方面想了 ​ 先查看一下网页源码&#xff0c;发现一段JavaScript代码&#xff0c;有一个关键类ctfs…...

MySQL 隔离级别:脏读、幻读及不可重复读的原理与示例

一、MySQL 隔离级别 MySQL 提供了四种隔离级别,用于控制事务之间的并发访问以及数据的可见性,不同隔离级别对脏读、幻读、不可重复读这几种并发数据问题有着不同的处理方式,具体如下: 隔离级别脏读不可重复读幻读性能特点及锁机制读未提交(READ UNCOMMITTED)允许出现允许…...

【JVM】- 内存结构

引言 JVM&#xff1a;Java Virtual Machine 定义&#xff1a;Java虚拟机&#xff0c;Java二进制字节码的运行环境好处&#xff1a; 一次编写&#xff0c;到处运行自动内存管理&#xff0c;垃圾回收的功能数组下标越界检查&#xff08;会抛异常&#xff0c;不会覆盖到其他代码…...

Go 语言接口详解

Go 语言接口详解 核心概念 接口定义 在 Go 语言中&#xff0c;接口是一种抽象类型&#xff0c;它定义了一组方法的集合&#xff1a; // 定义接口 type Shape interface {Area() float64Perimeter() float64 } 接口实现 Go 接口的实现是隐式的&#xff1a; // 矩形结构体…...

推荐 github 项目:GeminiImageApp(图片生成方向,可以做一定的素材)

推荐 github 项目:GeminiImageApp(图片生成方向&#xff0c;可以做一定的素材) 这个项目能干嘛? 使用 gemini 2.0 的 api 和 google 其他的 api 来做衍生处理 简化和优化了文生图和图生图的行为(我的最主要) 并且有一些目标检测和切割(我用不到) 视频和 imagefx 因为没 a…...

招商蛇口 | 执笔CID,启幕低密生活新境

作为中国城市生长的力量&#xff0c;招商蛇口以“美好生活承载者”为使命&#xff0c;深耕全球111座城市&#xff0c;以央企担当匠造时代理想人居。从深圳湾的开拓基因到西安高新CID的战略落子&#xff0c;招商蛇口始终与城市发展同频共振&#xff0c;以建筑诠释对土地与生活的…...

计算机基础知识解析:从应用到架构的全面拆解

目录 前言 1、 计算机的应用领域&#xff1a;无处不在的数字助手 2、 计算机的进化史&#xff1a;从算盘到量子计算 3、计算机的分类&#xff1a;不止 “台式机和笔记本” 4、计算机的组件&#xff1a;硬件与软件的协同 4.1 硬件&#xff1a;五大核心部件 4.2 软件&#…...

Python爬虫实战:研究Restkit库相关技术

1. 引言 1.1 研究背景与意义 在当今信息爆炸的时代,互联网上存在着海量的有价值数据。如何高效地采集这些数据并将其应用于实际业务中,成为了许多企业和开发者关注的焦点。网络爬虫技术作为一种自动化的数据采集工具,可以帮助我们从网页中提取所需的信息。而 RESTful API …...

在Zenodo下载文件 用到googlecolab googledrive

方法&#xff1a;Figshare/Zenodo上的数据/文件下载不下来&#xff1f;尝试利用Google Colab &#xff1a;https://zhuanlan.zhihu.com/p/1898503078782674027 参考&#xff1a; 通过Colab&谷歌云下载Figshare数据&#xff0c;超级实用&#xff01;&#xff01;&#xff0…...