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。然而,根据代码,似乎替换并没有按预期进行。以下是逐步解释正在发生的情况:
-
您使用
read_excel_column_to_list('./eqp_info.xls','Sheet1','车辆地址')从 Excel 文件中读取了 ‘车辆地址’ 列。 -
然后,您遍历了
fork_address_temp中的每个项,并打印了每个项的类型。输出显示大多数项的类型是 ‘float’,只有一个项的类型是 ‘str’(可能是具有值 ‘10.7.132.27’ 的地址)。 -
您尝试使用列表推导式创建了一个名为
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_temp 和 fork_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_temp 和 fork_address 的元组。通过在这个列表上迭代,您可以同时访问对应的车辆编号和地址。
请注意,这个示例假设 fork_num_temp 和 fork_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…...
软件机器人助力交通运输局数据录入,实现高效管理
随着科技的迅速发展,许多传统的行业正在寻求通过科技创新优化工作流程、提升效率。在这样的大背景下,交通运输部门也开始注重引入科技手段改善工作流程。博为小帮软件机器人正逐步改变着交通运输局的工作方式。 软件机器人:交通管理的利器 博…...
时序分解 | MATLAB实现基于SGMD辛几何模态分解的信号分解分量可视化
时序分解 | MATLAB实现基于SGMD辛几何模态分解的信号分解分量可视化 目录 时序分解 | MATLAB实现基于SGMD辛几何模态分解的信号分解分量可视化效果一览基本介绍程序设计参考资料 效果一览 基本介绍 SGMD分解算法(辛几何模态分解),分解结果可视…...
FinalShell报错:Swap file “.docker-compose.yml.swp“ already exists
FinalShell中编辑docker-compose.yml文件,保存时报错:Swap file ".docker-compose.yml.swp" already exists;报错信息截图如下: 问题原因:有人正在编辑docker-compose.yml文件或者上次编辑没有保存ÿ…...
卷积过程详细讲解
1:单通道卷积 以单通道卷积为例,输入为(1,5,5),分别表示1个通道,宽为5,高为5。假设卷积核大小为3x3,padding0,stride1。 卷积过程如下: 相应的卷积核不断…...
代码随想录第五十六天
代码随想录第五十六天 Leetcode 583. 两个字符串的删除操作Leetcode 72. 编辑距离 Leetcode 583. 两个字符串的删除操作 题目链接: 两个字符串的删除操作 自己的思路:想到了,但是初始化初始错了!!!! 思路1:直接动规五…...
.NET 最便捷的Log4Net日志记录器
最便捷的Log4Net使用方法 LOG4NET 配置日志记录器开始引用nuget LOG4NET 配置日志记录器 Apache log4net 库是一个帮助程序员将日志语句输出到各种的工具 的输出目标。log4net是优秀的Apachelog4j™框架的移植 Microsoft.NET 运行时。我们保持了与原始log4j相似的框架 同时利…...
深入探讨软件逆向工程:解密黑盒的奥秘
引言 逆向工程作为计算机科学领域中的一项关键技术,扮演着解密、漏洞分析、反病毒等诸多领域的重要角色。本文将深入探讨逆向工程的概念、应用领域以及一些常用的逆向工程技术。 什么是逆向工程? 逆向工程是指通过分析已有的程序或设备,推…...
利用tidevice+mysql+grafana实现ios性能测试
利用tidevicemysqlgrafana实现ios性能测试 1.什么是tidevice? tidevice是一个可以和ios设备进行通信的工具,提供以下功能: 截图获取手机信息ipa包的安装和卸载根据bundleID 启动和停止应用列出安装应用信息模拟Xcode运行XCTest,…...
内网安全:WMI协议与SMB协议横向移动
目录 网络拓扑图 网络环境说明 WMI协议 SMB协议 域内信息收集 WMI协议 - 横向移动 利用方式一:wmic命令 利用方式一:cscript 利用方式一:impacket SMB协议 - 横向移动 利用方式一:psexec 利用方式二:psexe…...
05-Numpy基础-用于数组的文件输入输出
np.save和np.load是读写磁盘数组数据的两个主要函数。默认情况下,数组是以未压缩的原始二进制格式保存在扩展名为.npy的文件中的: 如果文件路径末尾没有扩展名.npy,则该扩展名会被自动加上。然后就可以通过np.load读取磁盘上的数组࿱…...
Docker微服务实战
文章目录 业务需求IDEA编写代码编写Dockerfile构建镜像运行容器网页端访问测试 业务需求 利用Docker部署应用服务,实现在网页端通过输入地址 ip:端口/hello/docker,页面显示hello docker ! IDEA编写代码 创建springboot项目 网上很多教程,此步骤省略……...
NLNet论文总结和代码实现
Non-local Neural Networks(非局部神经网络):使用自注意力机制捕获远程依赖。 论文: https://arxiv.org/pdf/1711.07971.pdf 源码: 长距离依赖关系,顾名思义,是要和远程建立关系,在l…...
数字 IC 设计职位经典笔/面试题(三)
共100道经典笔试、面试题目(文末可全领) 1. IC 设计中同步复位与异步复位的区别? 同步复位在时钟沿变化时,完成复位动作。异步复位不管时钟,只要复位信号满足条件,就完成复位动作。异步复位对复位信号要求…...
Matlab分割彩色图像
彩色图像 彩色图像除有亮度信息外,还包含有颜色信息。以最常见的RGB(红绿蓝)彩色空间为例来简要说明彩色图像: 彩色图像可按照颜色的数目来划分。例如,256色图像和真彩色图像(2的16次方=21677…...
[数据集][目标检测]垃圾目标检测数据集VOC格式14963张44类别
数据集格式:Pascal VOC格式(不包含分割的txt文件,仅仅包含jpg图片和对应的xml) 图片数量(jpg文件个数):14963 标注数量(xml文件个数):14963 标注类别数:44 标注类别名称:["toiletries","plastic utensi…...
MATLAB算法实战应用案例精讲-【深度学习】推荐系统模型DSSMDeepFM
目录 前言 DSSM 输入层 英文 中文 表示层 匹配层 优缺点 DeepFM模...
基于springboot的社区生活缴费系统/基于javaweb的水电缴费系统
摘 要 网络的广泛应用给生活带来了十分的便利。所以把社区生活缴费管理与现在网络相结合,利用java语言建设社区生活缴费系统,实现社区生活缴费管理的信息化。则对于进一步提高社区生活缴费管理发展,丰富社区生活缴费管理经验能起到不少的促进…...
Linux —— keepalived
简介 Keepalived 是一个用 C 语言编写的路由软件。这个项目的主要目标是为 Linux 系统和基于 Linux 的基础设施提供简单而强大的负载均衡和高可用性功能。 Keepalived 开源并且免费的软件。 Keepalived 的2大核心功能 1. loadbalance 负载均衡 LB:ipvs--》lvs软件…...
ubuntu安装pyenv
Pyenv是一种轻量级的Python版本管理工具,它可以让你在同一台机器上同时管理多个Python版本。这个工具对于开发者来说非常有用,因为在不同的项目中可能需要使用不同版本的Python。下面是在Ubuntu系统上安装pyenv,并配置环境变量的步骤…...
华为云AI开发平台ModelArts
华为云ModelArts:重塑AI开发流程的“智能引擎”与“创新加速器”! 在人工智能浪潮席卷全球的2025年,企业拥抱AI的意愿空前高涨,但技术门槛高、流程复杂、资源投入巨大的现实,却让许多创新构想止步于实验室。数据科学家…...
谷歌浏览器插件
项目中有时候会用到插件 sync-cookie-extension1.0.0:开发环境同步测试 cookie 至 localhost,便于本地请求服务携带 cookie 参考地址:https://juejin.cn/post/7139354571712757767 里面有源码下载下来,加在到扩展即可使用FeHelp…...
在软件开发中正确使用MySQL日期时间类型的深度解析
在日常软件开发场景中,时间信息的存储是底层且核心的需求。从金融交易的精确记账时间、用户操作的行为日志,到供应链系统的物流节点时间戳,时间数据的准确性直接决定业务逻辑的可靠性。MySQL作为主流关系型数据库,其日期时间类型的…...
黑马Mybatis
Mybatis 表现层:页面展示 业务层:逻辑处理 持久层:持久数据化保存 在这里插入图片描述 Mybatis快速入门 的 Web 框架,用于构建 API,支持 Python 3.6。它基于标准 Python 类型提示,易于学习且功能强大。以下是一个完整的 FastAPI 入门教程,涵盖从环境搭建到创建并运行一个简单的…...
iPhone密码忘记了办?iPhoneUnlocker,iPhone解锁工具Aiseesoft iPhone Unlocker 高级注册版分享
平时用 iPhone 的时候,难免会碰到解锁的麻烦事。比如密码忘了、人脸识别 / 指纹识别突然不灵,或者买了二手 iPhone 却被原来的 iCloud 账号锁住,这时候就需要靠谱的解锁工具来帮忙了。Aiseesoft iPhone Unlocker 就是专门解决这些问题的软件&…...
高效线程安全的单例模式:Python 中的懒加载与自定义初始化参数
高效线程安全的单例模式:Python 中的懒加载与自定义初始化参数 在软件开发中,单例模式(Singleton Pattern)是一种常见的设计模式,确保一个类仅有一个实例,并提供一个全局访问点。在多线程环境下,实现单例模式时需要注意线程安全问题,以防止多个线程同时创建实例,导致…...
#Uniapp篇:chrome调试unapp适配
chrome调试设备----使用Android模拟机开发调试移动端页面 Chrome://inspect/#devices MuMu模拟器Edge浏览器:Android原生APP嵌入的H5页面元素定位 chrome://inspect/#devices uniapp单位适配 根路径下 postcss.config.js 需要装这些插件 “postcss”: “^8.5.…...
使用LangGraph和LangSmith构建多智能体人工智能系统
现在,通过组合几个较小的子智能体来创建一个强大的人工智能智能体正成为一种趋势。但这也带来了一些挑战,比如减少幻觉、管理对话流程、在测试期间留意智能体的工作方式、允许人工介入以及评估其性能。你需要进行大量的反复试验。 在这篇博客〔原作者&a…...
