1. ホーム
  2. パイソン

[解決済み】なぜpandasでデータフレームのコピーを作成する必要があるのか

2022-04-01 10:39:24

質問

親データフレームからサブデータフレームを選択する際、一部のプログラマーは、データフレームをコピーするために .copy() メソッドを使用します。例えば

X = my_dataframe[features_list].copy()

...ではなく、単に

X = my_dataframe[features_list]

なぜデータフレームのコピーを作っているのだろう?コピーを作らないとどうなるのでしょうか?

解決方法は?

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