一般社団法人 全国個人事業主支援協会

COLUMN コラム

Pandasの標準搭載の比較メソッドとしてcompareがある。
df = pd.DataFrame(
{
"col1": ["a", "a", "b", "b", "a"],
"col2": [1.0, 2.0, 3.0, np.nan, 5.0],
"col3": [1.0, 2.0, 3.0, 4.0, 5.0],
},
columns=["col1", "col2", "col3"],
)
df
df2 = df.copy()
df2.loc[0, "col1"] = "c"
df2.loc[2, "col3"] = 4.0
df2.loc[3, "col2"] = 4.0
df2
df.compare(df2)

 

このようなレイアウト。同一のインデックスを保持するdf同士の比較が行え(逆に言うとインデックスの不足分を見つけられない)、不一致の内容について列を分けて出力してくれる。nan比較についても検知可能。
axis=0で行で分ける

 

df.compare(df2, align_axis=0)

 

デフォルトだと、該当の行のみしか出力されないがkeep_shape=Trueで元のレイアウト保持で出力できる。

 

df.compare(df2, keep_shape=True)

 

keep_equal=Trueで一致した内容も出力する。(いまいち利用方が思いつかない)

 

df.compare(df2, keep_shape=True, keep_equal=True)
The following two tabs change content below.

WATANABE REN

千葉県在住のエンジニアです。最近はPythonやってます。

この記事をシェアする

  • Twitterでシェア
  • Facebookでシェア
  • LINEでシェア