使用rpy2导入R数据时NA_character_未转为Python NaN的解决求助
解决R魔法单元导出的NA在Python中显示为
NA_character_的问题 方法一:在R导出阶段处理
修改R魔法单元代码,将tibble转为普通data.frame后导出,rpy2会自动把R的NA转换为Python的NaN:
%%R -o df library(tibble) # 转为普通data.frame后导出 df <- as.data.frame(tibble(x = c("a", "b", NA)))
方法二:Python端转换
如果已经导出了带有NA_character_的DataFrame,可根据两种情况处理:
情况1:NA_character_是字符串类型
直接用pandas的replace方法(注意添加inplace=True或重新赋值):
import numpy as np # 替换整个DataFrame中的目标字符串 df.replace('NA_character_', np.nan, inplace=True) # 或仅替换指定列 df['x'] = df['x'].replace('NA_character_', np.nan)
情况2:NA_character_是rpy2的NA对象
如果是rpy2传递的原生NA对象,需导入rpy2的NA标识进行判断:
import numpy as np from rpy2.rinterface import NA_Character # 遍历列替换NA对象 df['x'] = df['x'].apply(lambda val: np.nan if val is NA_Character else val)
内容的提问来源于stack exchange,提问作者PaulS
相关产品推荐
相关产品推荐

