为何Pandas处理含None的列时优先选float64而非Int64?
问题解答
为什么没选int64?
传统numpy的int64类型不支持存储缺失值——Pandas里的None会被自动转换为np.nan,但np.nan本质是浮点类型,为了兼容这个缺失值,整个列只能被提升为float64,这是numpy原生类型体系的限制。
为什么没自动选Int64?
Pandas的Int64(注意大写I)是后来引入的可空整数类型,但pd.to_numeric的默认行为是优先适配numpy的原生数据类型体系,不会自动切换到Pandas自定义的可空类型。如果想要得到Int64类型,需要显式指定参数:
test_data = test_data.apply(lambda x: pd.to_numeric(x, errors='ignore', dtype='Int64'))
或者单独处理目标列时直接指定dtype:
test_data['目标列'] = pd.to_numeric(test_data['目标列'], errors='ignore', dtype='Int64')
内容的提问来源于stack exchange,提问作者Ish Thomas
相关产品推荐
相关产品推荐

