スポンサーリンク

【Python】pandasのSettingWithCopyWarningの対処法

記事内に広告が含まれています。
事象

以下のコードでSettingWithCopyWarningが発生していました。

def proc(df)
    df = df[df[col] == 'test']

    # 集計値項目を数値型に変換
    df.loc[:, col_1] = pd.to_numeric(df[col_1], errors='coerce')
    df.loc[:, col_2] = pd.to_numeric(df[col_2], errors='coerce')

    # 差を計算
    df.loc[:, col_diff] = df.loc[:, col_1] - df.loc[:, col_2]

ワーニング内容は以下のとおりです。

対応方法

SettingWithCopyWarningはPandasがデータフレームのコピーに対して操作を行っているか、それとも元のデータフレームに対して操作を行っているのかを識別できない場合に発生します。この警告を避けるためには、操作を行う前にデータフレームの明示的なコピーを作成することが推奨されます。

以下の修正コードではワーニングが発生しなくなりました。

def proc(df)
    df = df[df[col] == 'test'].copy()

    # 集計値項目を数値型に変換
    df.loc[:, col_1] = pd.to_numeric(df[col_1], errors='coerce')
    df.loc[:, col_2] = pd.to_numeric(df[col_2], errors='coerce')

    # 差を計算
    df.loc[:, col_diff] = df.loc[:, col_1] - df.loc[:, col_2]

2行目の末尾に.copy()を付与し、コピー処理であることを明示しました。

スポンサーリンク
スポンサーリンク
Python
著者SNS
タイトルとURLをコピーしました