我将数据从 .csv 文件读取到 Pandas 数据框,如下所示。对于其中一列,即id
,我想将列类型指定为int
。问题是id
系列有缺失/空值。
当我尝试投射时id
在读取 .csv 时将列转换为整数,我得到:
df= pd.read_csv("data.csv", dtype={'id': int})
error: Integer column has NA values
或者,我在阅读如下内容后尝试转换列类型,但这次我得到:
df= pd.read_csv("data.csv")
df[['id']] = df[['id']].astype(int)
error: Cannot convert NA to integer
我该如何解决这个问题?
在版本 0.24.+ 中,pandas 获得了保存缺失值的整数数据类型的能力。
可空整数数据类型 http://pandas.pydata.org/pandas-docs/stable/user_guide/integer_na.html.
Pandas 可以使用以下方法表示可能存在缺失值的整数数据arrays.IntegerArray http://pandas.pydata.org/pandas-docs/stable/reference/pandas.arrays.IntegerArray.html。这是 pandas 中实现的扩展类型。它不是整数的默认数据类型,并且不会被推断;您必须显式地将 dtype 传递到array() http://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.array.html#pandas.array or Series
:
arr = pd.array([1, 2, np.nan], dtype=pd.Int64Dtype())
pd.Series(arr)
0 1
1 2
2 NaN
dtype: Int64
要将列转换为可为空整数,请使用:
df['myCol'] = df['myCol'].astype('Int64')
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)