SQL での結合
次のコードを実行したときの出力として、正しいものを1つ選べ。
import pandas as pd
import sqlite3
con = sqlite3.connect(":memory:")
pd.DataFrame({"k": [1, 2], "v": [10, 20]}).to_sql("a", con, index=False)
pd.DataFrame({"k": [2, 3], "w": [200, 300]}).to_sql("b", con, index=False)
print(pd.read_sql("select a.k, a.v, b.w from a join b using (k)", con).values.tolist())
- A
[[2, 20, 200]] - B
[[1, 10, nan], [2, 20, 200]] - C
[[2, 20, 200], [3, nan, 300]] - D
[[1, 10], [2, 20]]
正解と解説を見る
正解:A
SQL の join は、既定で内部結合。left join・right join で外部結合になる。データベース側で絞り込んでから DataFrame に取り込むと、効率がよい。
| 順 | 実行する行 | 実行後の変数 |
|---|---|---|
| 1 | `import pandas as pd` | — |
| 2 | `import sqlite3` | — |
| 3 | `con = sqlite3.connect(":memory:")` | — |
| 4 | `pd.DataFrame({"k": [1, 2], "v": [10, 20]}).to…` | — |
| 5 | `pd.DataFrame({"k": [2, 3], "w": [200, 300]}).…` | — |
| 6 | `print(pd.read_sql("select a.k, a.v, b.w from …` | — |
| 結果 | 実際の出力 | [[2, 20, 200]] |
- A
正しい。
joinは、両方の表にあるキー(k=2)の行だけを返す(内部結合)。 - B
誤り。それは左外部結合の結果。
- C
誤り。それは右外部結合の結果。
- D
誤り。
b.wの列も取得している。
このサイトの問題は、各試験の公式に示された出題範囲に沿って作ったオリジナルの模擬問題です。本試験の問題ではありません。一般社団法人Pythonエンジニア育成推進協会の公式サービスではありません。