我已经处理了一个R数据帧:
import rpy2.robjects as ro
from rpy2.robjects.packages import importr
from rpy2.robjects import pandas2ri
from rpy2.robjects.conversion import localconverter
pandas2ri.activate()
import pandas as pd
%%R
n = c(2, 3, 5)
s = c("aa", "bb", "cc")
b = c(TRUE, FALSE, TRUE)
r_df = data.frame(n, s, b)
r_df[['c']]=NA
r_df
#out:
# n s b c
#1 2 aa 1 NA
#2 3 bb 0 NA
#3 5 cc 1 NA
当我将其转换为pandas时,它将NA
替换为整数。在
我试图在r_df
的列中设置不同的数据类型,但没有成功。我如何解决这个问题?在
注意,在转换为pandas之前设置r_df[is.na(r_df)]='None'
可以解决这个问题。但应该比这简单
可能的问题是R对于布尔值和整数值有一个“NA”值(在R术语中是“逻辑向量”),而Python/numpy没有。在
看看
dtype
在以下两个示例之间是如何变化的:这里发生的是,R数据帧中的列“c”是“逻辑”类型(})。rpy2转换器正在转换为
LGLSXP
),但在c中,这是一个整数值的R数组,只使用0、1和-2147483648中的一个(分别用于FALSE
、TRUE
和{numpy
整数向量,因为:rpy2
实现{a1},以允许跨两种语言匹配C数组。在numpy
使用该接口(^{诚然,这只是处理转换的方法之一,而且在某些情况下这不是最方便的。使用自定义转换器可以获得更适合您的行为。在
请注意:下面还有一个关于您的解决方法的说明
这里发生的是,你把R布尔向量转换成字符串向量。在
相关问题 更多 >
编程相关推荐