2

psycopg2を使用すると、次の形式でクエリの結果が得られます。

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

このネストされたタプル/リストをRPY2を使用してRデータフレームに変換しようとしています:名前が9列、データが4行(このネストされたリストの要素数))

しかし、方法がわかりません。tagedListを(RPY2コンテナライブラリに)試しましたが、成功しませんでした。タグ付きリストは、1つのリストごとに1つのリストのみを取得するようです。

ヘルプのためのThx!

4

1 に答える 1

1
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

postgresql用のRインターフェースがあることに注意してください。これにより、Pythonやrpy2を使用するよりもクリーンな方法が提供される可能性があります。

Pythonが必要な場合、別の可能性は、postgresqlからデータをロードするために必要なRコマンドを把握し、を使用してPythonでそれらを呼び出すことですro.r

于 2010-09-20T11:00:41.713 に答える