How to Copy Pandas DataFrame

Suraj Joshi Feb 02, 2024
  1. pandas.DataFrame.copy() Method Syntax
  2. Copy Pandas DataFrame Using the pandas.DataFrame.copy() Method
  3. Copy Pandas DataFrame by Assigning the DataFrame to a Variable
How to Copy Pandas DataFrame

This tutorial will introduce how we can copy a DataFrame object using the DataFrame.copy() method.

import pandas as pd

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

print(items_df)

Output:

    Id Cost
0  302  300
1  504  400
2  708  350 

We will use the above example to demonstrate the use of the DataFrame.copy() method in Pandas.

pandas.DataFrame.copy() Method Syntax

DataFrame.copy(deep=True)

It returns a copy of the DataFrame. deep is by default True, which means that any change made in the copy will not be reflected in the original DataFrame. However, if we set deep=False, any changes made in the copy will also be reflected in the original DataFrame.

Copy Pandas DataFrame Using the pandas.DataFrame.copy() Method

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")

Output:

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 

It creates a copy of the DataFrame items_df as deep_copy. If we change any value of the copy deep_copy, there is no change in the original DataFrame items_df. We set the value of the Cost column of the 1st row to NaN in deep_copy but items_df keeps unmodified.

Copy Pandas DataFrame by Assigning the DataFrame to a Variable

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")

Output:

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 

It creates a copy of the Cost column of the DataFrame items_df as copy_cost.

Author: Suraj Joshi
Suraj Joshi avatar Suraj Joshi avatar

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

LinkedIn

Related Article - Pandas DataFrame