rpy2 当列具有浮点值时,Pandas 列到 ts 对象获取“数组”

问题描述 投票:0回答:1

当尝试将 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']
python pandas rpy2
1个回答
0
投票

尝试将

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']
© www.soinside.com 2019 - 2024. All rights reserved.