Question

Avec psycopg2, j'obtenir le résultat de la requête sous cette forme:

  

[(15002325, 24, 20, 1393, -67333094L,   38, 4, 493,48763257822799,   493,63348372593703), (15.002.339, 76, 20, 1393, -67333094L, 91, 3,   499,95845909922201, 499,970048093743), (15.002.431, 24, 20, 1394, -67333094L,   38, 4, 493,493464900383,   493,63348372593703), (15.002.483, 76, 20, 1394, -67333094L, 91, 3,   499,959042442434, 499,97304310494502)]

Je suis en train de convertir cette tuple / liste imbriquée dans R dataframe avec RPY2: avec neuf colonnes avec le nom, et quatre lignes de données (nombre d'éléments dans cette liste imbriquée))

Mais je ne comprends pas comment, je suis en train de taggedList (dans la bibliothèque de conteneurs RPY2), mais sans succès .. Il semble liste étiquetée prend une seule liste par une seule liste.

Thx pour l'aide!

Était-ce utile?

La solution

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

Notez qu'il existe une R interface pour postgresql , et cela peut fournir un manière plus propre que de passer par Python et rpy2.

Si vous avez besoin Python, une autre possibilité est de comprendre les commandes de R nécessaires pour charger les données de postgresql, puis les appeler en Python en utilisant ro.r.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top