2016-07-04 12 views
2

私は、リストのリストの効率が低いループから移動し、numpy/pandasを学習している、より多くのPythonについて学習しています。sqlite dbからpandasデータフレームへの新しい列の追加

のは、私は、例えばパンダデータフレームDFを、持っているように見える何かを言ってみましょう:今、どのように私は効果的にPythonで、値に基づいて、私のDBを照会します

| id | Year | Value | 
--------------------- 
| 1 | 2015 | 1.00 | 
| 1 | 2014 | 0.80 | 
| 2 | 2015 | 1.10 | 
| 3 | 2015 | 0.6 | 

など

を照会された値を新しい列に追加します。今すぐコードは次のようになります

uIDs = set(df['id']) 
uIDs = ",".join([str(x) for x in uIDs]) 

with dbconnection as con: 
    data = con.execute("SELECT id, value2 FROM table WHERE ids IN ("+uIDs")") 

for i in data.fetchall(): 
    df[df['id'] == i[0]]['newcol'] = i[1] 

申し訳ありませんがコード内のエラーで、私は例を挙げて頭を打っていました。

パンダのデータフレームからすべてのユニークIDを取得しようとしていますが、データベースから新しい値を選択し、それらを繰り返しループしてデータフレームの新しい列に追加します。

これを行うには、より効果的な/効率的な/ピジョンの方法がありますか?あなたが3、3、000、または30,000行以上のものを見ているなら、それはこれに接近する最善の方法でしょうか?あなたはに参加左SQLスタイルをしたいので

答えて

2

、ちょうど使用

pd.merge(df, data.fetchall(), on='id', how='left') 
関連する問題