我将数据从.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
我该如何解决这个问题?
从Pandas 1.0.0开始,你可以使用Pandas了。NA的价值观。这不会强制缺少值的整数列为浮点数。
在读取数据时,您需要做的是:
df= pd.read_csv("data.csv", dtype={'id': 'Int64'})
注意'Int64'被引号括起来,I是大写的。这区分了Panda的'Int64'和numpy的'Int64'。
作为旁注,这也适用于.astype()
df['id'] = df['id'].astype('Int64')
文件在这里
https://pandas.pydata.org/pandas-docs/stable/user_guide/integer_na.html
从Pandas 1.0.0开始,你可以使用Pandas了。NA的价值观。这不会强制缺少值的整数列为浮点数。
在读取数据时,您需要做的是:
df= pd.read_csv("data.csv", dtype={'id': 'Int64'})
注意'Int64'被引号括起来,I是大写的。这区分了Panda的'Int64'和numpy的'Int64'。
作为旁注,这也适用于.astype()
df['id'] = df['id'].astype('Int64')
文件在这里
https://pandas.pydata.org/pandas-docs/stable/user_guide/integer_na.html