In Pandas, we have the freedom to add columns in the data frame whenever needed. There are multiple ways to add columns to pandas dataframe.
Add multiple columns to a DataFrame using Lists
Python3
# importing pandas library import pandas as pd # creating and initializing a nested list students = [[ 'jackma' , 34 , 'Sydeny' , 'Australia' ], [ 'Ritika' , 30 , 'Delhi' , 'India' ], [ 'Vansh' , 31 , 'Delhi' , 'India' ], [ 'Nany' , 32 , 'Tokyo' , 'Japan' ], [ 'May' , 16 , 'New York' , 'US' ], [ 'Michael' , 17 , 'las vegas' , 'US' ]] # Create a DataFrame object df = pd.DataFrame(students, columns = [ 'Name' , 'Age' , 'City' , 'Country' ], index = [ 'a' , 'b' , 'c' , 'd' , 'e' , 'f' ]) # Creating 2 lists 'marks' and 'gender' marks = [ 85.4 , 94.9 , 55.2 , 100.0 , 40.5 , 33.5 ] gender = [ 'M' , 'F' , 'M' , 'F' , 'F' , 'M' ] # adding lists as new column to dataframe df df[ 'Uni_Marks' ] = marks df[ 'Gender' ] = gender # Displaying the Data frame df |
Output :
Add multiple columns to a data frame using Dataframe.assign() method
Using DataFrame.assign() method, we can set column names as parameters and pass values as list to replace/create the columns.
Python3
# importing pandas library import pandas as pd # creating and initializing a nested list students = [[ 'jackma' , 34 , 'Sydeny' , 'Australia' ], [ 'Ritika' , 30 , 'Delhi' , 'India' ], [ 'Vansh' , 31 , 'Delhi' , 'India' ], [ 'Nany' , 32 , 'Tokyo' , 'Japan' ], [ 'May' , 16 , 'New York' , 'US' ], [ 'Michael' , 17 , 'las vegas' , 'US' ]] # Create a DataFrame object df = pd.DataFrame(students, columns = [ 'Name' , 'Age' , 'City' , 'Country' ], index = [ 'a' , 'b' , 'c' , 'd' , 'e' , 'f' ]) # creating columns 'Admissionnum' and 'Percentage' # using dataframe.assign() function df = df.assign(Admissionnum = [ 250 , 800 , 1200 , 300 , 400 , 700 ], Percentage = [ '85%' , '90%' , '75%' , '35%' , '60%' , '80%' ]) # Displaying the Data frame df |
Output :
Add multiple columns to a data frame using Dataframe.insert() method
Using DataFrame.insert() method, we can add new columns at specific position of the column name sequence. Although insert takes single column name, value as input, but we can use it repeatedly to add multiple columns to the DataFrame.
Python3
# importing pandas library import pandas as pd # creating and initializing a nested list students = [[ 'jackma' , 34 , 'Sydeny' , 'Australia' ], [ 'Ritika' , 30 , 'Delhi' , 'India' ], [ 'Vansh' , 31 , 'Delhi' , 'India' ], [ 'Nany' , 32 , 'Tokyo' , 'Japan' ], [ 'May' , 16 , 'New York' , 'US' ], [ 'Michael' , 17 , 'las vegas' , 'US' ]] # Create a DataFrame object df = pd.DataFrame(students, columns = [ 'Name' , 'Age' , 'City' , 'Country' ], index = [ 'a' , 'b' , 'c' , 'd' , 'e' , 'f' ]) # creating columns 'Age' and 'ID' at # 2nd and 3rd position using # dataframe.insert() function df.insert( 2 , "Marks" , [ 90 , 70 , 45 , 33 , 88 , 77 ], True ) df.insert( 3 , "ID" , [ 101 , 201 , 401 , 303 , 202 , 111 ], True ) # Displaying the Data frame df |
Output :
Add multiple columns to a data frame using Dictionary and zip()
Using Dict and zip() we can create a mapping of key values, which can be assigned to a new column name.
Python3
# importing pandas library import pandas as pd # creating and initializing a nested list students = [[ 'jackma' , 34 , 'Sydeny' , 'Australia' ], [ 'Ritika' , 30 , 'Delhi' , 'India' ], [ 'Vansh' , 31 , 'Delhi' , 'India' ], [ 'Nany' , 32 , 'Tokyo' , 'Japan' ], [ 'May' , 16 , 'New York' , 'US' ], [ 'Michael' , 17 , 'las vegas' , 'US' ]] # Create a DataFrame object df = pd.DataFrame(students, columns = [ 'Name' , 'Age' , 'City' , 'Country' ], index = [ 'a' , 'b' , 'c' , 'd' , 'e' , 'f' ]) # creating 2 lists 'ids' and 'marks' ids = [ 11 , 12 , 13 , 14 , 15 , 16 ] marks = [ 85 , 41 , 77 , 57 , 20 , 95 , 96 ] # Creating columns 'ID' and 'Uni_marks' # using Dictionary and zip() df[ 'ID' ] = dict ( zip (ids, df[ 'Name' ])) df[ 'Uni_Marks' ] = dict ( zip (marks, df[ 'Name' ])) # Displaying the Data frame df |
Output :