pandasドリル第10回の問題は「別のDataFrameの列を結合するには?」です。
つとむ先生の紹介
20数年、最適化関連の案件に従事するビープラウドの技術士(情報工学)。2014年より最適化のモデル作成にPythonを使い始め、効率的に開発できるようになる。東京海洋大学、青山学院大学、慶應義塾大学、上智大学に非常勤講師としての勤務経験がある。また、オペレーションズ・リサーチ学会に約30年所属し、理事を2期務めた。
主な著書はモデリングの諸相、Python言語によるビジネスアナリティクス、今日から使える!組合せ最適化、データ分析ライブラリーを用いた最適化モデルの作り方
問題
dfに、dfclの対応する生徒のクラス名を追加して、下記のようなDataFrameを作成し、変数resultに入れてください。
変数resultに入るべきDataFrame
Name | Subject | Point | Class | |
---|---|---|---|---|
0 | Alice | 国語 | 87 | 1-A |
1 | Alice | 算数 | 72 | 1-A |
2 | Bob | 国語 | 65 | 1-B |
3 | Bob | 算数 | 92 | 1-B |
問題で使うDataFrame
import pandas as pd df = pd.DataFrame( [ ['Alice', '国語', 87], ['Alice', '算数', 72], ['Bob', '国語', 65], ['Bob', '算数', 92], ], columns=['Name', 'Subject', 'Point']) df
変数dfの内容
Name | Subject | Point | |
---|---|---|---|
0 | Alice | 国語 | 87 |
1 | Bob | 国語 | 65 |
2 | Alice | 算数 | 72 |
3 | Bob | 算数 | 92 |
dfcl = pd.DataFrame( [['Alice', '1-A'], ['Bob', '1-B']], columns=['Name', 'Class']) dfcl
変数dfclの内容
Name | Class | |
---|---|---|
0 | Alice | 1-A |
1 | Bob | 1-B |
回答
result = df.merge(dfcl)
解説
別のDataFrameの列を結合するのに、merge
が使えます。
df.merge(dfcl)
とすると、df
とdfcl
に共通するNameをキーにして、dfcl
の列をdf
に追加します。
df.merge(dfcl)
の、df
が追加先のDataFrameで、dfcl
(()の中)が追加したいDataFrameです。
そのため、答えは、<追加先のDataFrame>.merge(<追加するDataFrame>)
となります。
前回の問題
第9回【ピボットテーブルを戻すには?】はこちらからご覧ください。