错误:无法在 Pandas 中将浮点 NaN 转换为整数

6 python 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
Run Code Online (Sandbox Code Playgroud)

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

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

但是我也得到了错误,我想改变非空值的 dtype,任何人都可以指出我的错误吗?谢谢

Ken*_*Wei 6

Pandas 不能为 integers 存储 NaN 值。严格来说,您可以有一个包含混合数据类型的列,但这在计算上可能效率低下。所以如果你坚持,你可以做到

df['a'] = df['a'].astype('O')
df.loc[df['a'].notnull(), 'a'] = df.loc[df['a'].notnull(), 'a'].astype(int)
Run Code Online (Sandbox Code Playgroud)


lmi*_*asf 1

据我在pandas 文档中读到的内容,不可能表示整数NaN

\n\n
\n

“由于 NumPy 缺乏从头开始内置的高性能 NA 支持,主要的受害者是在整数数组中表示 NA 的能力。”

\n
\n\n

正如稍后解释的,这是由于内存和性能原因,并且结果系列仍然是 \xe2\x80\x9cnumeric\xe2\x80\x9d。一种可能性是使用dtype=object数组。

\n