当尝试将 Pandas 数据帧列转换为 R ts 对象时,如果列值包含浮点数,我会获得“array”类型的 R 对象,而不是“ts”类型。将 Pandas 列转换为 R ts 对象的正确方法应该是什么?
import pandas as pd
path_to_Rdll = "_path_goes_here"
import os
os.environ['R_HOME'] = path_to_Rdll
import rpy2
import rpy2.robjects as robjects
from rpy2.robjects import pandas2ri
pandas2ri.activate()
print(rpy2.__version__)
r_ts_function = robjects.r('ts')
pandas_dataFrame = pd.DataFrame({'value': [3, 2, 1]})
rdata_1 = r_ts_function(pandas_dataFrame.value.values)
print("class(rdata_1):")
print(robjects.r('class')(rdata_1))
这按预期工作,返回:
class(rdata_1):
['ts']
但是当列值包含浮点数时
pandas_dataFrame = pd.DataFrame({'value': [3.1, 2, 1]})
rdata_2 = r_ts_function(pandas_dataFrame.value.values)
print("class(rdata_2):")
print(robjects.r('class')(rdata_2))
我得到:
class(rdata_2):
['array']
尝试将
pandas_dataFrame
的值转换为 python list
。
r_ts_function = robjects.r('ts')
pandas_dataFrame = pd.DataFrame({'value': [3.1, 2, 1]})
rdata_1 = r_ts_function(list(pandas_dataFrame.value.values))
print(robjects.r('class')(rdata_1)) # Prints ['ts']