親データフレームからサブデータフレームを選択するときに、一部のプログラマーがメソッドを使用してデータフレームのコピーを作成していることに気づきました.copy()
。たとえば、
X = my_dataframe[features_list].copy()
...だけではなく
X = my_dataframe[features_list]
なぜデータフレームのコピーを作成するのですか? コピーを作成しない場合はどうなりますか?
ベストアンサー1
この回答は、パンダの新しいバージョンでは非推奨となっています。ドキュメント
これは Paul の回答を拡張したものです。Pandas では、DataFrame のインデックスを作成すると、最初の DataFrame への参照が返されます。したがって、サブセットを変更すると、最初の DataFrame が変更されます。したがって、最初の DataFrame が変更されないようにしたい場合は、コピーを使用する必要があります。次のコードを考えてみましょう。
df = DataFrame({'x': [1,2]})
df_sub = df[0:1]
df_sub.x = -1
print(df)
以下が手に入ります:
x
0 -1
1 2
対照的に、次の例では df は変更されません。
df_sub_copy = df[0:1].copy()
df_sub_copy.x = -1