[英]rpy2 convert Matrix -> DataFrame
我認為這個看似簡單的操作之前已經解決了,但我找不到任何示例。
在 R 環境中,@data 的類型為 DataFrame 但 rpy2 (2.2) 返回一個矩陣。 有沒有一種方便的方法可以將 m 轉換為 DataFrame 或讓 robjects.r(query) 返回 DataFrame?
from rpy2.robjects.packages import importr
import rpy2.robjects as robjects
fimport = importr('fImport')
yahooImport = robjects.r('function(x) yahooImport(x)@data')
qqq = yahooImport("QQQ")
print type(qqq)
您可以嘗試在 yahooImport function 中顯式轉換為 data.frame。
以下對我有用:
>>> yahooImport = robjects.r('function(x) as.data.frame(yahooImport(x)@data)')
>>> print type(qqq)
<class 'rpy2.robjects.vectors.DataFrame'>
>>> qqq
<DataFrame - Python:0x102412680 / R:0x103c2b310>
[Float..., Float..., Float..., Float..., Float..., Float...]
Open: <class 'rpy2.robjects.vectors.FloatVector'>
<FloatVector - Python:0x10241a638 / R:0x1048f1c00>
[58.970000, 58.660000, 59.180000, ..., 102.250000, 102.870000, 102.250000]
High: <class 'rpy2.robjects.vectors.FloatVector'>
<FloatVector - Python:0x10241acf8 / R:0x104916000>
[59.700000, 59.320000, 59.190000, ..., 102.310000, 103.470000, 102.310000]
Low: <class 'rpy2.robjects.vectors.FloatVector'>
<FloatVector - Python:0x10241add0 / R:0x10491c200>
[58.920000, 58.340000, 58.500000, ..., 99.310000, 100.620000, 100.560000]
Close: <class 'rpy2.robjects.vectors.FloatVector'>
<FloatVector - Python:0x10241aef0 / R:0x10486f800>
[59.600000, 58.990000, 58.600000, ..., 100.120000, 102.620000, 102.120000]
Volume: <class 'rpy2.robjects.vectors.FloatVector'>
<FloatVector - Python:0x10241d050 / R:0x104875a00>
[43540100.000000, 70148800.000000, 57085500.000000, ..., 8743600.000000, 9688600.000000, 5232000.000000]
Adj.Close: <class 'rpy2.robjects.vectors.FloatVector'>
<FloatVector - Python:0x10241d170 / R:0x10485a000>
[59.600000, 58.990000, 58.600000, ..., 48.110000, 49.320000, 49.080000]
yahooImport 返回一個 timeSeries object,它在內部表示為矩陣,這就是導致 rpy2 中的返回值成為矩陣的原因。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.