Domanda

Con psycopg2, ottengo risultato della query in questa forma:

  

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

Sto cercando di convertire questo nidificato tuple / lista in R dataframe con RPY2: con nove colonna con nome, e quattro riga di dati (numero di elemento di questa lista annidata))

Ma io non capisco come, sto cercando con taggedList (in libreria contenitore RPY2), ma senza successo .. Sembra elenco tag prendere una lista da una sola lista.

Thx aiuto!

È stato utile?

Soluzione

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

Si noti che esiste un R interfaccia per PostgreSQL , e questo può fornire un modo più pulito che passare attraverso Python e rpy2.

Se avete bisogno di Python, un'altra possibilità è quello di capire i comandi R necessari per caricare i dati da PostgreSQL, e poi li chiamano in Python utilizzando ro.r.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top