使用rpy2将NA_character_导入Python后未将其标识为NaN

yeotifhr  于 2023-01-28  发布在  Python
关注(0)|答案(1)|浏览(154)

我在一个R magic单元格中使用以下代码:

%%R -o df

library(tibble)

df <- tibble(x = c("a", "b", NA))

然而,当我在另一个单元格(Python单元格)中运行时:

df.isna()

我得到

x
1  False
2  False
3  False

实际上,导入的 Dataframe 是

x
1              a
2              b
3  NA_character_

如何将NA_character_转换为Python NaN
我试过了

df.replace('NA_character_', np.nan)

但没有成功。

ykejflvf

ykejflvf1#

正如您在注解中所指出的,R NA_character_值没有转换为np.nan,而是具有不同的类型rpy2.rinterface_lib.sexp.NACharacterType,在这种情况下,解决方案只是迭代该列并将此类型转换为np.nan

import rpy2 # if you haven't already
df['x'] = df['x'].apply(lambda val: np.nan if isinstance(
    val, rpy2.rinterface_lib.sexp.NACharacterType) 
    else val
)

至于这是否是一个bug,3.3.0版的changes声明:
panda Series中的值nan现在转换为R NA(问题#668)。
然而,相反的情况似乎并没有发生,我不知道这是否意味着它是一个bug,一个设计决策,或者仅仅是它还没有被实现。

相关问题