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 或其他适当的值。

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

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

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

相关文章

RabbitMQ 消费者

RabbitMQ的消费模式分两种&#xff1a;推模式和拉模式&#xff0c;推模式采用Basic.Consume进行消费&#xff0c;拉模式则是调用Basic.Get进行消费。   消费者通过订阅队列从RabbitMQ中获取消息进行消费&#xff0c;为避免消息丢失可采用消费确认机制 消费者 拉模式拉模式的实…

企业数字化转型中,VR数字展厅能有哪些体验?

在数字化转型的浪潮下&#xff0c;企业纷纷开始注重数字展厅的开展&#xff0c;VR虚拟展厅结合VR全景技术&#xff0c;可以创造出许多有趣的玩法和体验&#xff0c;无论是虚拟参观、互动体验还是VR云会议对接&#xff0c;都为企业客户带来了全新的感知方式。 同传统展厅相比&am…

Kotlin 高阶函数详解

高阶函数 在 Kotlin 中&#xff0c;函数是一等公民&#xff0c;高阶函数是 Kotlin 的一大难点&#xff0c;如果高阶函数不懂的话&#xff0c;那么要学习 Kotlin 中的协程、阅读 Kotlin 的源码是非常难的&#xff0c;因为源码中有太多高阶函数了。 高阶函数的定义 高阶函数的…

好用的电容笔有哪些推荐?开学季便宜好用电容笔推荐

开学马上要来了&#xff0c;想必很多学生党都在为开学而做准备&#xff0c;要知道&#xff0c;原装的Apple Pencil&#xff0c;虽然功能很强&#xff0c;但是价格却很贵&#xff0c;不是一般人能够承受得起的。所以&#xff0c;是否也有类似于Apple Pencil这样的电容笔&#xf…

php开发websocket笔记(1)

1.运行server1.php文件 Windows命令行运行 php server1.php<?phperror_reporting(E_ALL); set_time_limit(0); //ob_implicit_flush(); $address 0.0.0.0;//可以监听网络上的请求 $address 127.0.0.1;//只能监听本机的请求$port 10005; //创建端口 $socket1 socket_cr…

6个比较火的AI绘画生成工具

随着人工智能技术的发展&#xff0c;市场上出现了越来越多的人工智能图像生成工具。这些人工智能图像生成工具可以自动创建惊人的图像、艺术作品和设计&#xff0c;以帮助设计师和创意人员更快地实现他们的创造性想法。在本文中&#xff0c;我们将推荐7种最近流行的人工智能图像…

【0基础入门Python Web笔记】三、python 之函数以及常用内置函数

三、python 之函数以及常用内置函数 函数函数定义函数调用函数参数返回值 常用内置函数input()函数range()函数其它 更多实战项目可进入下方官网 函数 函数是一种用于封装可重复使用代码块的工具&#xff0c;能够将一系列操作组织成一个逻辑单元。 函数定义 在Python中&…

创建R包-2.1:在RStudio中使用Rcpp制作R-Package(更新于2023.8.23)

目录 0-前言 1-在RStudio中创建R包项目 2-创建R包 2.1通过R函数创建新包 2.2在RStudio通过菜单来创建一个新包 2.3关于R包创建的说明 3-添加R自定义函数 4-添加C函数 0-前言 目标&#xff1a;在RStudio中创建一个R包&#xff0c;这个R包中包含C函数&#xff0c;接口是Rc…

【Unity自制手册】游戏基础API大全

&#x1f468;‍&#x1f4bb;个人主页&#xff1a;元宇宙-秩沅 &#x1f468;‍&#x1f4bb; hallo 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍&#x1f4bb; 本文由 秩沅 原创 &#x1f468;‍&#x1f4bb; 收录于专栏&#xff1a;Uni…

嵌入式Linux开发实操(十):ADC接口开发

#前言 ADC就是模数转换,可以用来接一些模拟量设备,所谓模拟量就是波形不是方波而是各种包络形状的波形的信号,比如电压、电流等电信号或压力、温度、湿度、位移、声音等非电信号,ADC就是将这些信号转换为数字方波信号,以便于信息传递的。 #ADC硬件设计 key按键连接了AD…

《算法竞赛·快冲300题》每日一题:“凑二十四”

《算法竞赛快冲300题》将于2024年出版&#xff0c;是《算法竞赛》的辅助练习册。 所有题目放在自建的OJ New Online Judge。 用C/C、Java、Python三种语言给出代码&#xff0c;以中低档题为主&#xff0c;适合入门、进阶。 文章目录 题目描述题解C代码Java代码Python代码 “ 凑…

根据源码,模拟实现 RabbitMQ - 网络通讯设计,实现客户端Connection、Channel(完结)

目录 一、客户端代码实现 1.1、需求分析 1.2、具体实现 1&#xff09;实现 ConnectionFactory 2&#xff09;实现 Connection 3&#xff09;实现 Channel 二、编写 Demo 2.1、实例 2.1、实例演示 一、客户端代码实现 1.1、需求分析 RabbitMQ 的客户端设定&#xff…

深入浅出Pytorch函数——torch.nn.init.trunc_normal_

分类目录&#xff1a;《深入浅出Pytorch函数》总目录 相关文章&#xff1a; 深入浅出Pytorch函数——torch.nn.init.calculate_gain 深入浅出Pytorch函数——torch.nn.init.uniform_ 深入浅出Pytorch函数——torch.nn.init.normal_ 深入浅出Pytorch函数——torch.nn.init.c…

Mybatis的动态SQL及关键属性和标识的区别(对SQL更灵活的使用)

&#xff08; 虽然文章中有大多文本内容&#xff0c;想了解更深需要耐心看完&#xff0c;必定大有受益 &#xff09; 目录 一、动态SQL ( 1 ) 是什么 ( 2 ) 作用 ( 3 ) 优点 ( 4 ) 特殊标签 ( 5 ) 演示 二、#和$的区别 2.1 #使用 ( 1 ) #占位符语法 ( 2 ) #优点 2.…

朴素贝叶斯==基于样本特征来预测样本属于的类别y

目录 朴素贝叶斯基于样本特征来预测样本属于的类别y 朴素贝叶斯算法的基本概念与核心思想 假设两个特征维度之间是相互独立的 拉普拉斯平滑增加出现次数保证0不出现 ​编辑 基于样本特征来预测样本属于的类别y 什么是拉普拉斯平滑 朴素贝叶斯基于样本特征来预测样本属于的…

软考高项(九)项目范围管理 ★重点集萃★

&#x1f451; 个人主页 &#x1f451; &#xff1a;&#x1f61c;&#x1f61c;&#x1f61c;Fish_Vast&#x1f61c;&#x1f61c;&#x1f61c; &#x1f41d; 个人格言 &#x1f41d; &#xff1a;&#x1f9d0;&#x1f9d0;&#x1f9d0;说到做到&#xff0c;言出必行&am…

C#反编译工具ILSPY

ILSPY ILSpy 是一个开源的.Net程序集浏览器和反编译工具。 Visual Studio 2022附带了默认情况下启用的F12反编译支持&#xff08;使用我们的引擎v7.1&#xff09;。 在Visual Studio 2019中&#xff0c;您必须手动启用F12支持。转到“工具”/“选项”/“文本编辑器”/C#/Adva…

c#设计模式-结构型模式 之 外观模式

概述 外观模式&#xff08;Facade Pattern&#xff09;又名门面模式&#xff0c;隐藏系统的复杂性&#xff0c;并向客户端提供了一个客户端可以访问系统的接口。这种类型的设计模式属于结构型模式&#xff0c;它向现有的系统添加一个接口&#xff0c;来隐藏系统的复杂性。该模式…