Python 使用RPY2将psycopg2的结果映射到R的数据帧

Python 使用RPY2将psycopg2的结果映射到R的数据帧,python,mapping,psycopg2,dataframe,rpy2,Python,Mapping,Psycopg2,Dataframe,Rpy2,使用psycopg2,我以以下形式获得查询结果: [(15002325,24,20,1393,-67333094L, 38, 4, 493.48763257822799, 493.63348372593703),(15002339,76,201393,-67333094L,91,3, 499.9584590992201499.970048093743),(15002431,24,20,1394,-67333094L, 38, 4, 493.493464900383, 493.6334837259

使用psycopg2,我以以下形式获得查询结果:

[(15002325,24,20,1393,-67333094L, 38, 4, 493.48763257822799, 493.63348372593703),(15002339,76,201393,-67333094L,91,3, 499.9584590992201499.970048093743),(15002431,24,20,1394,-67333094L, 38, 4, 493.493464900383, 493.63348372593703),(15002483,76,201394,-67333094L,91,3, 499.9590424424344499.97304310494502)]

我正在尝试将这个嵌套的元组/列表转换为带有RPY2的R数据帧:有九列名称,四行数据(这个嵌套列表中的元素数))

但我不明白如何使用taggedList(进入RPY2容器库),但没有成功。。似乎标签列表只需要一个列表一个列表

谢谢你的帮助

import rpy2.robjects as ro
r=ro.r

data=[(15002325, 24, 20, 1393, -67333094L, 38, 4, 493.48763257822799, 493.63348372593703), (15002339, 76, 20, 1393, -67333094L, 91, 3, 499.95845909922201, 499.970048093743), (15002431, 24, 20, 1394, -67333094L, 38, 4, 493.493464900383, 493.63348372593703), (15002483, 76, 20, 1394, -67333094L, 91, 3, 499.959042442434, 499.97304310494502)]
columns=zip(*data)
columns=[ro.FloatVector(col) for col in columns]
names=['col{i}'.format(i=i) for i in range(9)]
dataf = r['data.frame'](**dict(zip(names,columns)))
print(dataf)

#       col8 col6     col7      col4 col5 col2 col3     col0 col1
# 1 493.6335    4 493.4876 -67333094   38   20 1393 15002325   24
# 2 499.9700    3 499.9585 -67333094   91   20 1393 15002339   76
# 3 493.6335    4 493.4935 -67333094   38   20 1394 15002431   24
# 4 499.9730    3 499.9590 -67333094   91   20 1394 15002483   76
请注意,这里有一个,这可能提供了一种比使用Python和rpy2更干净的方法


如果您需要Python,另一种可能是找出从postgresql加载数据所需的R命令,然后使用Python中的
ro.R

Thx调用它们以获得答案!我更喜欢RPY2而不是postgresqlR接口,因为不同的R Pgsql接口之间存在战争。