将包含NaNs的Pandas列转换为dtype`int`
我从一个.csv文件读取数据到pandas数据框如下。 对于其中一列,即id
,我想指定列types为int
。 问题是id
序列有缺失/空值。
当我试图在阅读.csv时将id
列转换为整数时,我得到:
df= pd.read_csv("data.csv", dtype={'id': int}) error: Integer column has NA values
另外,我试着转换列types后阅读如下,但这次我得到:
df= pd.read_csv("data.csv") df[['id']] = df[['id']].astype(int) error: Cannot convert NA to integer
我该如何解决这个问题?
在整数列中缺乏NaN rep是一个pandas“gotcha” 。
通常的解决方法是简单地使用浮动。
如果您可以修改您存储的数据,请使用标记值来填写缺less的id
。 通过列名称推断的一个常见用例是id
是一个严格大于零的整数,您可以使用0
作为标记值,以便您可以编写
if row['id']: regular_process(row) else: special_process(row)
在我的情况下,我已经编辑了csv的列格式,即将列的格式从一般改为数字。然后我能够改变pandas的types。
df= pd.read_csv("data.csv") df[['id']] = df[['id']].astype(int)