将包含NaN的Pandas列转换为dtype`int`

16 浏览
0 Comments

将包含NaN的Pandas列转换为dtype`int`

我从一个.csv文件中读取数据到Pandas数据帧中,就像下面这样。对于其中的一列,即id,我想将该列类型指定为int。问题是,id系列具有缺失/空值。

当我试图在读取.csv文件时将id列转换为整数时,我会得到:

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

我该如何解决这个问题?

admin 更改状态以发布 2023年5月24日
0
0 Comments

整数列中缺少NaN表现形式是Pandas的一个“小技巧”。

通常的解决方法是使用浮点数。

0
0 Comments

在版本0.24.+中,Pandas已经具备了存储有缺失值的整数数据类型的能力。

可空整型数据类型

Pandas可以使用arrays.IntegerArray来表示可能缺失值的整数数据。这是Pandas中实现的扩展类型。它不是整数的默认数据类型,并且不会被推断出来;您必须显式地将dtype传递给array()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')

0