演習課題「データフレームの連結」
右のコードエリアには、データフレームfruits1,fruits2が定義されています。
fruits1,fruits2をconcat関数を使用して、共通する名前をもつ列を連結してください。
採点の前にはすべてのセルを実行し、ノートブックを保存してください。
期待する出力値
name value
0 grape 600
1 apple 300
0 cherry 1100
1 banana 200
#12:共通部分で連結
このチャプターでは、連結するとき、列名が共通する列のみを連結する方法について学習します。
concat関数を使うとき、join="inner"
とすることで、データフレームを共通部分で連結することができるimport pandas as pd
fruits1 = pd.DataFrame({"name": ["apple", "orange"], "quantity": [1, 2]})
fruits2 = pd.DataFrame({"name": ["banana", "melon"], "value": [100, 1000]})
print(pd.concat([fruits1, fruits2], join=inner))
縦に連結しているため、列名の共通部分で連結している
横に連結するときに、共通部分で連結すると、行名の共通部分で連結することができるimport pandas as pd
student1 = pd.DataFrame({"age": [15, 16, 15], "lang": ["ruby", "python", "c"]}, index=["Kirishima", "Rokumura", "Midorikawa"])
student2 = pd.DataFrame({"message": ["Hello", "Ohayo"]}, index=["Kirishima", "Rokumura"])
print(pd.concat([student1, student2], join="inner", axis=1))
動画のコード(下記コード1)を実行したときに警告として出力されるFutureWarningについて説明します。
このFutureWarningは、現在のバージョンでの動作が将来のバージョンで変更されるときに出力されます。
今回は「concatメソッドを実行したときに、列を名前の昇順にソートしたが、将来のバージョンではデフォルトでソートしない」旨が書かれています。
今回のコードでFutureWarningがでないようにするには、次の2通りの方法があります。
・concatメソッドを使う際に、sort=True
を追加する(現在のバージョンのデフォルトの動作と同じ結果になる)(下記コード2)
・concatメソッドを使う際に、sort=False
を追加する(将来のバージョンのデフォルトの動作と同じ結果になる)
※ paizaラーニングの環境でのバージョンでは出力されますが、他の環境でバージョンが異なる場合は出力されないこともあります。
コード1:FutureWarningが発生するコードimport pandas as pd
fruits1 = pd.DataFrame({"name": ["apple", "orange"], "quantity": [1, 2]})
fruits2 = pd.DataFrame({"name": ["banana", "melon"], "value": [100, 1000]})
print(pd.concat([fruits1, fruits2]))
コード2:FutureWarningが発生しないようにしたコードimport pandas as pd
fruits1 = pd.DataFrame({"name": ["apple", "orange"], "quantity": [1, 2]})
fruits2 = pd.DataFrame({"name": ["banana", "melon"], "value": [100, 1000]})
print(pd.concat([fruits1, fruits2], sort=True))