SettingWithCopy悪名高い警告について多くの質問を見てきました。私はそれらのいくつかにあえて答えることさえしました。最近、このトピックに関する回答をまとめていて、データフレーム ビューの利点を提示したいと考えていました。なぜデータフレームビューを作成するのが良い考えなのか、またはそれが生成するものは何であれ、具体的なデモンストレーションを作成できませんでしたSettingWithCopy
検討df
df = pd.DataFrame([[1, 2], [3, 4]], list('ab'), list('AB'))
df
A B
x 1 2
y 3 4
そして、dfvこれはのコピーですdf
dfv = df[['A']]
print(dfv.is_copy)
<weakref at 0000000010916E08; to 'DataFrame' at 000000000EBF95C0>
print(bool(dfv.is_copy))
True
私は生成することができますSettingWithCopy
dfv.iloc[0, 0] = 0
ただし、dfv変わった
print(dfv)
A
a 0
b 3
dfしていない
print(df)
A B
x 1 2
y 3 4
そしてdfvまだコピーです
print(bool(dfv.is_copy))
True
私が変わればdf
df.iloc[0, 0] = 7
print(df)
A B
x 7 2
y 3 4
しかしdfv、変わっていません。しかし、私はdfから参照することができますdfv
print(dfv.is_copy())
A B
x 7 2
y 3 4
質問
がdfv独自のデータを保持し (つまり、実際にはメモリを節約しない)、警告にもかかわらず代入操作を介して値を代入する場合、なぜ最初から参照を保存して生成SettingWithCopyWarningする必要があるのでしょうか?
具体的なメリットは何ですか?
