回答編集履歴
2
修正
answer
CHANGED
@@ -19,13 +19,14 @@
|
|
19
19
|
codes = [111,222,333]
|
20
20
|
dfs = [get_price(code) for code in codes]
|
21
21
|
prices = pd.concat(dfs, axis=1)
|
22
|
+
prices.columns = map(str,codes) # 列名を変更
|
22
23
|
print(prices)
|
23
24
|
"""
|
24
|
-
|
25
|
+
111 222 333
|
25
26
|
date
|
26
|
-
2019-01-01
|
27
|
+
2019-01-01 10.0 NaN NaN
|
27
|
-
2019-01-02
|
28
|
+
2019-01-02 NaN 20.0 NaN
|
28
|
-
2019-01-03
|
29
|
+
2019-01-03 NaN NaN 30.0
|
29
30
|
"""
|
30
31
|
```
|
31
32
|
|
1
ついでに
answer
CHANGED
@@ -27,4 +27,30 @@
|
|
27
27
|
2019-01-02 NaN 20.0 NaN
|
28
28
|
2019-01-03 NaN NaN 30.0
|
29
29
|
"""
|
30
|
+
```
|
31
|
+
|
32
|
+
### ついでに
|
33
|
+
ふつうに複数の`code`で絞った結果を返したい場合は以下のように書けます。
|
34
|
+
```Python
|
35
|
+
import sqlite3
|
36
|
+
import pandas as pd
|
37
|
+
|
38
|
+
def get_prices(codes):
|
39
|
+
con = sqlite3.connect('test.db')
|
40
|
+
where = ','.join(map(str,codes)) # codeを直埋め
|
41
|
+
sql = 'SELECT date, price FROM prices WHERE code in ({}) ORDER BY date'.format(where)
|
42
|
+
print(sql) # SELECT date, price FROM prices WHERE code in (111,222,333) ORDER BY date
|
43
|
+
return pd.read_sql(sql, con,
|
44
|
+
parse_dates=('date',),
|
45
|
+
index_col='date')
|
46
|
+
|
47
|
+
prices = get_prices([111,222,333])
|
48
|
+
print(prices)
|
49
|
+
"""
|
50
|
+
price
|
51
|
+
date
|
52
|
+
2019-01-01 10
|
53
|
+
2019-01-02 20
|
54
|
+
2019-01-03 30
|
55
|
+
"""
|
30
56
|
```
|