gpt4 book ai didi

python - Pandas 将列类型从 float 更改为带有空值的 int

转载 作者:行者123 更新时间:2023-12-05 03:34:16 27 4
gpt4 key购买 nike

当我创建空数据框时,默认情况下列是由 float64 类型创建的。我试图改变“int”和对象的类型。使用“对象”结果很好。为什么我无法更改“int”的类型?

import pandas as pd
data = pd.DataFrame()
header_list = ['surname','name','second_name', 'sex', 'age', 'phone', 'region']
data = data.reindex(columns = header_list)

data[['surname','name','second_name','sex','region']] = data[['surname','name','second_name','sex','region']].astype('object')
data[['age','phone']]= data[['age','phone']].astype('int')
print(data.info())

最佳答案

这是因为您在数据框中看到的 np.nan 或 NaN(它们并不完全相同)值是浮点类型。遗憾的是,只要您的代码中有 NaN 值,就无法避免这种限制。

请阅读 pandas 文档中的更多信息 here.

Because NaN is a float, a column of integers with even one missing values is cast to floating-point dtype (see Support for integer NA for more). pandas provides a nullable integer array, which can be used by explicitly requesting the dtype:

上述文档中建议的解决方案是:

pd.Series([1, 2, np.nan, 4], dtype=pd.Int64Dtype())

哪个返回:

0       1
1 2
2 <NA>
3 4
dtype: Int64

关于python - Pandas 将列类型从 float 更改为带有空值的 int,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70202199/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com