下記のようなテーブル(prices)からcodeを配列で取得するにはどうしたら良いのでしょうか?
postgreSQL
1code(text) date(text) price(integer) 2 3111 2018-01-30 89 4111 2018-01-31 89 5111 2018-02-01 88 6111 2018-02-02 88 7222 2018-01-30 89 8222 2018-01-31 89 9222 2018-02-01 88 10222 2018-02-02 88 11333 2018-01-30 89 12333 2018-01-31 89 13333 2018-02-01 88 14333 2018-02-02 88
まずは下記のような関数を定義しました。
python
1import pandas as pd 2import psycopg2 3 4def get_price(code): 5 6 con = psycopg2.connect( 7 host='localhost', 8 port = '****', 9 database='****', 10 user='****', 11 password='****' 12 ) 13 14 return pd.read_sql('SELECT date, price ' 15 'FROM prices ' 16 'WHERE code = %s ' 17 'ORDER BY date', 18 con, 19 params=(code), 20 parse_dates=('date',), 21 index_col='date')
そして、以下のようにすれば動的にデータが取り出せるかと思います。
python
1a = get_price(111) 2b = get_price(222) 3c = get_price(333)
しかし、これだと取り出したいcodeの数だけコードを書かなければならないため、
prices = [111,222,333]
上記のように配列で記述し、データを取得するにはどのようにしたら良いでしょうか?
ちなみに、取り出した後は
prices = pd.concat([a, b, c], axis=1)
と言ったように横方向に結合し、使用します。
何方かアドバイスお願いします。
最終的には以下のようなデータを取得したいです。
date 111 222 333
2019-01-01 10.0 NaN NaN
2019-01-02 NaN 20.0 NaN
2019-01-03 NaN NaN 30.0
回答2件
あなたの回答
tips
プレビュー