繁体   English   中英

错误:在pandas中无法将float NaN转换为整数

[英]Error:cannot convert float NaN to integer in pandas

我有数据帧:

   a            b     c      d
0 nan           Y     nan   nan
1  1.27838e+06  N      3     96
2 nan           N      2    nan
3  284633       Y     nan    44

我尝试将非零的数据更改为整数类型以避免指数数据(1.27838e + 06):

f=lambda x : int(x)
df['a']=np.where(df['a']==None,np.nan,df['a'].apply(f))

但我得到错误也事件认为我希望更改非null值的dtype,任何人都可以指出我的错误? 谢谢

Pandas无法存储整数的NaN值 严格地说,您可以使用具有混合数据类型的列,但这可能在计算上效率低下。 所以,如果你坚持,你可以做到

df['a'] = df['a'].astype('O')
df.loc[df['a'].notnull(), 'a'] = df.loc[df['a'].notnull(), 'a'].astype(int)

据我在pandas文档中读到,无法表示整数NaN

“由于没有从头开始构建NumPy的高性能NA支持,主要的伤亡是能够在整数数组中表示NA。”

正如后面所解释的那样,这是由于内存和性能原因,以及最终的系列仍然是“数字”。 一种可能性是使用dtype=object数组。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM