如何读取含整数与浮点数混合的CSV列并保留原始类型
保留CSV原始数值类型加载并判断浮点数列的方法
一、加载CSV时保留混合数值类型
pandas 默认会把同时包含整数和浮点数的列统一转换为 float64 类型,要避免这种自动转换,你可以通过自定义转换器来保留原始的整数/浮点数类型:
import pandas as pd # 定义自定义转换函数:优先转整数,失败则转浮点数 def convert_elev(value): try: return int(value) except ValueError: return float(value) # 加载CSV时指定转换器处理目标列 final_collar = pd.read_csv('你的文件路径.csv', converters={'ELEV': convert_elev})
这样加载后,ELEV 列会同时存在 int 和 float 类型的原始值,不会被统一转为浮点数。
二、创建布尔列判断是否为浮点数
你原来的代码逻辑有误(直接将值与 float 类比较无法判断类型),正确的做法是通过判断每个元素的类型来生成布尔列:
方法1:使用 apply 直接生成
final_collar['ELEV_FLOAT'] = final_collar['ELEV'].apply(lambda x: isinstance(x, float))
方法2:结合 np.where 使用
import numpy as np final_collar['ELEV_FLOAT'] = np.where( final_collar['ELEV'].apply(lambda x: isinstance(x, float)), True, False )
执行后,ELEV_FLOAT 列会标记对应行的 ELEV 值是否为浮点数类型。
内容的提问来源于stack exchange,提问作者Taiwo
相关产品推荐
相关产品推荐

