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 <

博客围绕Python开发展开,介绍了将Excel文件中NaN值处理为0的方法,指出原代码比较字符串‘nan’的问题并给出解决方案;说明math模块是Python内置无需单独安装;还讲解了实现两个列表一一对应,以及根据编号查询对应地址的函数设计。
最低0.47元/天 解锁文章
6214

被折叠的 条评论
为什么被折叠?



