Pregunta

Con psycopg2, consigo resultado de la consulta en esta forma:

[(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)]

Estoy tratando de convertir esta tupla / lista anidada en I trama de datos con RPY2: con nueve columna con nombre, y cuatro fila de datos (número de elemento en esta lista anidada))

Pero no entiendo cómo, yo estoy tratando con taggedList (en la biblioteca de contenedores RPY2) pero sin éxito .. Parece lista etiquetados para llevar una lista de una sola lista.

Thx por la ayuda!

¿Fue útil?

Solución

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

Nota que hay una R interfaz para postgresql , y esto puede proporcionar una forma más limpia de pasar por Python y rpy2.

Si necesita Python, otra posibilidad consiste en averiguar los comandos R necesarios para cargar los datos de PostgreSQL, y luego llamarlos en Python usando ro.r.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top