如何解决含None的数组导入Pandas列后转为浮点数的问题?
解决方法
pandas默认整数类型不支持缺失值,当数组包含None(会被转为NaN)时,列会自动转为浮点类型。要实现你需要的整数+NaN显示效果,可采用以下方案:
方案1:创建DataFrame时指定可空整数类型
直接在创建阶段指定列类型为pd.Int64Dtype(),该类型同时支持整数和缺失值:
import pandas as pd the_array = [None, None, None, 101, 555, 756, 924, 485] df = pd.DataFrame({'request': the_array}, dtype=pd.Int64Dtype()) # 若需要将<NA>替换为NaN显示 df['request'] = df['request'].astype(object).replace(pd.NA, float('nan')) print(df)
输出:
request 0 NaN 1 NaN 2 NaN 3 101 4 555 5 756 6 924 7 485
方案2:对已有DataFrame转换类型
如果已经创建了DataFrame,可直接转换列类型:
import pandas as pd the_array = [None, None, None, 101, 555, 756, 924, 485] df = pd.DataFrame(columns=['request']) df['request'] = the_array # 转换为可空整数类型 df['request'] = df['request'].astype(pd.Int64Dtype()) # 替换<NA>为NaN df['request'] = df['request'].astype(object).replace(pd.NA, float('nan')) print(df)
输出与需求完全一致。
关键点说明
- 普通
int类型无法兼容缺失值,强制转换会报错,必须使用pandas提供的可空整数类型(pd.Int64Dtype())。 - 该特性要求pandas版本≥0.24,若版本过低需先升级。
内容的提问来源于stack exchange,提问作者GISGUY
相关产品推荐
相关产品推荐

