The difference concerns whether you wish to modify an existing frame, or create a new frame while maintaining the original frame as it was.

In particular, DataFrame.assign returns you a new object that has a copy of the original data with the requested changes ... the original frame remains unchanged.

In your particular case:

>>> df = DataFrame({'A': range(1, 11), 'B': np.random.randn(10)})

Now suppose you wish to create a new frame in which A is everywhere 1 without destroying df. Then you could use .assign

>>> new_df = df.assign(A=1)

If you do not wish to maintain the original values, then clearly df["A"] = 1 will be more appropriate. This also explains the speed difference, by necessity .assign must copy the data while [...] does not.

Answer from donkopotamus on Stack Overflow
🌐
Metasnake
metasnake.com › blog › pydata-assign.html
MetaSnake - Learn to use the assign method in Pandas (or how to deal with SettingWithCopyWarning issues)
April 3, 2020 - Master the .assign method and gain superpowers! Try not to mutate data when using pandas. Even the pandas core developers say that you should not use mutation. If you use method chaining (note that index assignment does not work with chaining!), you will not mutate data.
🌐
Codecademy
codecademy.com › docs › python:pandas › dataframe › .assign()
Python:Pandas | DataFrame | .assign() | Codecademy
July 2, 2025 - The .assign() method in pandas is used to create new columns or modify existing columns in a DataFrame while preserving the original DataFrame.
🌐
W3Schools
w3schools.com › python › pandas › ref_df_assign.asp
Pandas DataFrame assign() Method
import pandas as pd data = { "age": [16, 14, 10], "qualified": [True, True, True] } df = pd.DataFrame(data) newdf = df.assign(name = ["Emil", "Tobias", "Linus"]) Try it Yourself » · The assign() method adds a new column to an existing DataFrame. ...
🌐
Medium
medium.com › @whyamit404 › understanding-pandas-assign-with-step-by-step-examples-6cf2d79ff481
Understanding pandas.assign() with Step-by-Step Examples | by whyamit404 | Medium
February 26, 2025 - So, if you forget to assign the result back, nothing will actually change. ... DataFrame: This is your existing data table. ... It’s that straightforward. Let’s jump straight into an example — you’ll get the hang of it faster this way: import pandas as pd # Creating a simple DataFrame df = pd.DataFrame({ 'Name': ['Alice', 'Bob', 'Charlie'], 'Age': [25, 30, 35] }) # Adding a new column 'Age_in_5_years' new_df = df.assign(Age_in_5_years = df['Age'] + 5) print(new_df)
Find elsewhere
🌐
GeeksforGeeks
geeksforgeeks.org › pandas › pandas-dataframe-assign
Pandas DataFrame assign() Method | Create new Columns in DataFrame - GeeksforGeeks
July 11, 2025 - The assign() method in Pandas is used to create or modify columns in a DataFrame while preserving the original DataFrame. It returns a new DataFrame with the specified modifications.
🌐
Readthedocs
babypandas.readthedocs.io › en › latest › _autosummary › bpd.DataFrame.assign.html
bpd.DataFrame.assign — BabyPandas 1.0 documentation
>>> df = bpd.DataFrame().assign(flower=['sunflower', 'rose']) >>> df.assign(color=['yellow', 'red']) flower color 0 sunflower yellow 1 rose red
🌐
Sinyi-chou
sinyi-chou.github.io › pandas-assign
Pandas - Assign Method
Assign is a method in pandas.DataFrame capable of creating new columns or re-assigning existing columns. Note that the original columns will be overwritten when being re-assigned.
🌐
Note.nkmk.me
note.nkmk.me › home › python › pandas
pandas: Add rows/columns to DataFrame with assign(), insert()
August 1, 2023 - The assign() method either appends a new column or assigns new values to an existing column. pandas.DataFrame.assign — pandas 2.0.3 documentation
🌐
GitHub
github.com › pandas-dev › pandas › issues › 24145
Dataframe.assign performance · Issue #24145 · pandas-dev/pandas
December 7, 2018 - import pandas as pd import numpy as np import time def inplace_assign(df, **kwargs): for k, v in kwargs.items(): df[k]=v return df def functional_assign(df, **kwargs): ndf=df.copy(deep=False) return inplace_assign(ndf, **kwargs) if __name__=="__main__": N = 2 * 1000 * 1000 df = pd.DataFrame(dict(a=np.zeros((N,)),b=np.arange(N), e=np.zeros((N,)), f=np.zeros((N,)), g=np.zeros((N,)), h=np.ones((N,)), i=np.ones((N,)))) ta=0 for i in range(10): t0 = time.time() for i in range(10): df.assign(c=df['b']*2) ta+=(time.time()-t0) print("PANDAS ASSIGN", ta) ta=0 for i in range(10): t0 = time.time() for i in range(10): functional_assign(df,c=df['b']*2) ta+=(time.time()-t0) print("FUNC ASSIGN", ta)
Author   pandas-dev
🌐
freeCodeCamp
forum.freecodecamp.org › python
Re-Assigning values on a pandas DataFrame best practice - Python - The freeCodeCamp Forum
December 28, 2021 - Hi guys, I am working on the Medical Data Visualizer challenge and I am reassigning DataFrame values based on some conditions, like this : df['cholesterol'].loc[df['cholesterol'] == 1] = 0 #normalizing cholestrol value…
🌐
Pandas
pandas.pydata.org › docs › reference › api › pandas.DataFrame.at.html
pandas.DataFrame.at — pandas 3.0.5 documentation
Access a single value for a row/column label pair · Similar to loc, in that both provide label-based lookups. Use at if you only need to get or set a single value in a DataFrame or Series
🌐
Programiz
programiz.com › python-programming › pandas › methods › assign
Pandas assign()
The assign() method returns a new DataFrame with the assigned columns. The original DataFrame remains unchanged. import pandas as pd data = {'A': [1, 2, 3]} df = pd.DataFrame(data) # assign a new column B new_df = df.assign(B=[4, 5, 6]) print(new_df)
🌐
Dataquest Community
community.dataquest.io › q&a › dq courses
Add new column to dataframe using .assign()? - DQ Courses - Dataquest Community
April 9, 2020 - Screen Link: My Code: df = pd.DataFrame(bmp_series, columns=['mean_price']) df = df.assign(bmm_series, columns=['mean_odometer_km']) What I expected to happen: Expecting bmm (i.e. brand_mean_mileage) to be appended…
🌐
Vultr Docs
docs.vultr.com › python › third-party › pandas › DataFrame › assign
Python Pandas DataFrame assign() - Assign New Columns | Vultr Docs
December 31, 2024 - The assign() method in Pandas is a versatile tool for adding new columns to a DataFrame in a way that promotes readability and ease of use. This method is particularly useful in data transformation tasks where new derived columns are created ...
🌐
Kaggle
kaggle.com › code › residentmario › indexing-selecting-assigning
Indexing, Selecting & Assigning | Kaggle
April 21, 2023 - Explore and run AI code with Kaggle Notebooks | Using data from multiple data sources
🌐
GUVI
guvi.in › hub › pandas-tutorial › assign-method
Pandas DataFrame assign() Method
In this tutorial, we will learn the python pandas DataFrame.assign() method. This method assigns new columns to a DataFrame and returns a new object with all original columns in addition to new ones.