PythonのPandasライブラリでは、DataFrameの複製を作成するために copy()
関数を使用します。この関数を使用すると、元のDataFrameと同じデータを持つ新しいDataFrameを作成することができます。
しかし、DataFrameのコピーを =
で行うと、データのコピーではなく、いわゆる参照渡しになります。その結果、コピー先の変数に対して操作を行った結果が、コピー元の変数に対して反映されます。
以下に、それぞれの方法でDataFrameを複製した場合の挙動の違いを示します。
import pandas as pd
# DataFrameの作成
df = pd.DataFrame({'A': 'FOO', 'B': 'foo', 'C': 'ふー'}, index=[1, 2, 3])
# =を使ったコピー(参照渡し)
df_copy = df
df_copy['D'] = 1
print(df) # dfにも 'D' 列が追加される
# copy()を使ったコピー
df_copy2 = df.copy()
df_copy2['E'] = 2
print(df) # dfには 'E' 列が追加されない
このように、DataFrameを複製する際には copy()
関数を使用することで、元のDataFrameに影響を与えずに新しいDataFrameを作成することができます。.