Pandas DataFrameで共通の要素(行)を見つける方法をわかりやすく解説
Pandas DataFrame内の共通の要素を見つけたい場合は、merge()メソッドを使い、キーとなる列のリストを指定するのが基本です。この記事では、2つのDataFrameから共通する行を抽出する手順を、実際のコード例と実行結果とともにわかりやすく解説します。
共通の要素を見つける手順
サイズ変更が可能で、異なるデータ型も格納できる2次元の表形式データ df1 を作成します。
入力DataFrame df1 の内容を出力して確認します。
同様にもう1つの2次元の表形式データ df2 を作成します。
入力DataFrame df2 の内容を出力して確認します。
merge()メソッドを使って、両方のDataFrameに共通する要素を見つけます。
共通行だけを含むDataFrameを出力します。
コード例
import pandas as pd
df1 = pd.DataFrame(
{
"x": [5, 2, 7, 0],
"y": [4, 7, 5, 1],
"z": [9, 3, 5, 1]
}
)
df2 = pd.DataFrame(
{
"x": [5, 2, 7, 0, 11, 12],
"y": [4, 7, 5, 1, 19, 20],
"z": [9, 3, 5, 1, 29, 30]
}
)
print("Input DataFrame 1 is:\n", df1)
print("Input DataFrame 2 is:\n", df2)
common = df1.merge(df2, on=['x', 'y', 'z'])
print("Common of DataFrame 1 and 2 is: \n", common)
実行結果
Input DataFrame 1 is:
x y z
0 5 4 9
1 2 7 3
2 7 5 5
3 0 1 1
Input DataFrame 2 is:
x y z
0 5 4 9
1 2 7 3
2 7 5 5
3 0 1 1
4 11 19 29
5 12 20 30
Common of DataFrame 1 and 2 is:
x y z
0 5 4 9
1 2 7 3
2 7 5 5
3 0 1 1
merge()メソッドのポイント
merge()メソッドは、デフォルトでは内部結合(inner join)として動作します。そのため、on引数で指定した列(この例では x、y、z のすべて)の値が、両方のDataFrameに一致して存在する行だけが結果に残ります。
上記の例では、df2にはdf1の全行が含まれており、さらに追加の行(11, 12行目)もあります。mergeの結果、両方に共通する4行のみが抽出されていることが確認できます。
なお、結合キーが1列だけの場合は df1.merge(df2, on='x') のように指定でき、複数列の場合はリストで渡す点がポイントです。また、共通する行の件数だけを知りたい場合は、len(common)で簡単に取得できます。
-
【Python】Pandas DataFrameからnull(欠損値)行を削除する方法|dropna()の使い方
PandasのDataFrameからnull(NaN)行を削除するには、dropna()メソッドを使用します。この記事では、NaNを含むCSVファイルを読み込み、dropna()で欠損値を含む行を取り除くまでの手順を、サンプルコードと実行結果とともにわかりやすく解説します。前提:NaNを含むCSVファイル今回の例では、一部にNaN(null値)が含まれる以下のようなCSVファイル(CarRecords.csv)を使用します。手順1:read_csv()でCSVファイルを読み込むまずpandasをインポートし、read_csv()を使ってCSVファイルを読み込みます。ここではデスクトップ上に保存
-
MatplotlibでPandasデータフレームのプロットDPIを変更する方法
PandasのDataFrameプロットのDPI(dots per inch:1インチあたりのドット数)を変更するには、MatplotlibのrcParamsを使用して解像度を設定します。rcParamsを使うことで、スクリプト全体に対して一括で描画設定を適用できるため、グラフの画質を簡単に調整できます。手順図のサイズを設定し、figure.autolayoutでサブプロット間および周囲の余白を自動調整します。plt.rcParams[figure.dpi] = 120 のようにしてDPI値を設定します。プロット用のPandasデータフレームを作成します。データフレームをプロットします。sho