如何在不使用Pandas的情况下将列表数字转数值、'nan'转np.nan
嘿,这事儿好办!不用Pandas,用基础Python加numpy就能轻松搞定。我给你两种实用的方案,你按需选就行:
方法1:逐元素遍历处理(新手友好,逻辑清晰)
先导入numpy,然后逐个处理列表里的元素,逻辑一目了然:
import numpy as np original_list = ["1","2","nan","4","5"] processed_list = [] for item in original_list: # 兼容大小写的"nan",比如"NaN"或者"NAN"也能识别 if item.lower() == "nan": processed_list.append(np.nan) else: # 优先转整数,保留更精准的类型;转失败再转浮点数 try: processed_list.append(int(item)) except ValueError: processed_list.append(float(item)) print(processed_list) # 输出结果: [1, 2, nan, 4, 5]
方法2:列表推导式+辅助函数(代码更紧凑)
如果喜欢简洁的写法,可以把转换逻辑封装成一个小函数,再用列表推导式批量处理:
import numpy as np original_list = ["1","2","nan","4","5"] def convert_element(item): if item.lower() == "nan": return np.nan try: return int(item) except ValueError: return float(item) processed_list = [convert_element(item) for item in original_list] print(processed_list) # 输出结果和上面完全一致: [1, 2, nan, 4, 5]
补充说明
这两种方案都完全不依赖Pandas,只用到了Python内置的异常处理和numpy的np.nan。如果你的场景里还会遇到其他特殊字符串(比如"inf"),只需要在辅助函数里加对应的判断分支就行,扩展性很强。
内容的提问来源于stack exchange,提问作者Felix
相关产品推荐
相关产品推荐

