Pandas DataFrame をコピーする

Suraj Joshi 2023年1月30日
  1. pandas.DataFrame.copy() メソッドの構文
  2. pandas.DataFrame.copy() メソッドを使って Pandas の DataFrame をコピーする
  3. DataFrame を変数に割り当てて Pandas の DataFrame をコピーする
Pandas DataFrame をコピーする

このチュートリアルでは、DataFrame.copy() メソッドを使って DataFrame オブジェクトをコピーする方法を紹介します。

import pandas as pd

items_df = pd.DataFrame(
    {
        "Id": [302, 504, 708],
        "Cost": ["300", "400", "350"],
    }
)

print(items_df)

出力:

    Id Cost
0  302  300
1  504  400
2  708  350 

上記の例を使って、Pandas の DataFrame.copy() メソッドの使用方法を説明します。

pandas.DataFrame.copy() メソッドの構文

DataFrame.copy(deep=True)

これは DataFrame のコピーを返します。デフォルトでは deepTrue であり、コピーに加えられた変更は元の DataFrame には反映されないことを意味します。しかし、deep=False を指定すると、コピーで行った変更は元の DataFrame にも反映されます。

pandas.DataFrame.copy() メソッドを使って Pandas の DataFrame をコピーする

import pandas as pd
import numpy as np

items_df = pd.DataFrame(
    {
        "Id": [302, 504, 708],
        "Cost": ["300", "400", "350"],
    }
)

deep_copy = items_df.copy()

print("Original DataFrame before changing value in copy DataFrame:")
print(items_df, "\n")

print("Copy DataFrame before changing value in copy DataFrame:")
print(deep_copy, "\n")

deep_copy.loc[0, "Cost"] = np.nan

print("Original DataFrame after changing value in copy DataFrame:")
print(items_df, "\n")

print("Copy DataFrame after changing value in copy DataFrame:")
print(deep_copy, "\n")

出力:

Original DataFrame before changing value in copy DataFrame:
    Id Cost
0  302  300
1  504  400
2  708  350 

Copy DataFrame before changing value in copy DataFrame:
    Id Cost
0  302  300
1  504  400
2  708  350 

Original DataFrame after changing value in copy DataFrame:
    Id Cost
0  302  300
1  504  400
2  708  350 

Copy DataFrame after changing value in copy DataFrame:
    Id Cost
0  302  NaN
1  504  400
2  708  350 

DataFrame items_df のコピーを deep_copy として作成します。コピーした deep_copy の値を変更しても、元の DataFrame items_df には変更はありません。コピーした deep_copy の 1 行目の Cost カラムの値を NaN に設定しても、items_df は変更されません。

DataFrame を変数に割り当てて Pandas の DataFrame をコピーする

import pandas as pd
import numpy as np

items_df = pd.DataFrame(
    {
        "Id": [302, 504, 708],
        "Cost": ["300", "400", "350"],
    }
)

copy_cost = items_df["Cost"]

print("Cost column of Original DataFrame before changing value in copy DataFrame:")
print(items_df, "\n")

print("Cost column of Copied DataFrame before changing value in copy DataFrame:")
print(copy_cost, "\n")

copy_cost[0] = np.nan

print("Cost column of Original DataFrame after changing value in copy DataFrame:")
print(copy_cost, "\n")

print("Cost column of Copied DataFrame after changing value in copy DataFrame:")
print(copy_cost, "\n")

出力:

Cost column of Original DataFrame before changing value in copy DataFrame:
    Id Cost
0  302  300
1  504  400
2  708  350 

Cost column of Copied DataFrame before changing value in copy DataFrame:
0    300
1    400
2    350
Name: Cost, dtype: object 

Cost column of Original DataFrame after changing value in copy DataFrame:
0    NaN
1    400
2    350
Name: Cost, dtype: object 

Cost column of Copied DataFrame after changing value in copy DataFrame:
0    NaN
1    400
2    350
Name: Cost, dtype: object 

DataFrame items_dfCost カラムのコピーを copy_cost として作成します。

著者: Suraj Joshi
Suraj Joshi avatar Suraj Joshi avatar

Suraj Joshi is a backend software engineer at Matrice.ai.

LinkedIn

関連記事 - Pandas DataFrame