LoginSignup
0
1

More than 1 year has passed since last update.

pandas にて SettingWithCopyWarning が起こった

Posted at

こちらの参考資料のものと同じような対処法だったので、自分用にまとめておきます。

# エラー文
#A value is trying to be set on a copy of a slice from a DataFrame.
# Try using .loc[row_indexer,col_indexer] = value instead

こんな感じの、エラーが発生。書いたコードは以下。

df['sample'] = df['sample].astype(int)

原因は、参照するのかコピーするのかを明示していなかったこと。

この記述では、元のdf['sample']をいじるのか、もう一個コピーを作成してそちらをいじるのか不明な所です。
なので、

## 一度copyの作成
df1 = df.copy()
df1['sample'] = df1['sample].astype(int)

コピーを作成して、対処すると警告文が出てこなくなります。
参照渡しではなく、コピーを作ってあげることにより解決!!!

※警告文には.locを使いましょう的な文がありますが、
今回では関係なかったですね。そこが詰まったところではあります。

これは、chained indexing(隠れた連鎖)と呼ばれるらしいです。

参考資料
https://qiita.com/HEM_SP/items/56cd62a1c000d342bd70

0
1
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1