How To Add Data To New Column Pandas
In this article, we will look at unlike ways to calculation new cavalcade to existing DataFrame in Pandas.
Let us create a simple DataFrame that we volition apply as a reference throughout this article to demonstrate calculation new columns into Pandas DataFrame.
# import pandas library import pandas every bit pd # create pandas DataFrame df = pd.DataFrame({'team': ['India', 'South Africa', 'New Zealand', 'England'], 'points': [10, viii, 3, 5], 'runrate': [0.5, 1.4, 2, -0.6], 'wins': [5, four, 2, two]}) # print the DataFrame impress(df)
Output
team points runrate wins 0 Bharat 10 0.v v 1 Due south Africa 8 1.iv iv 2 New Zealand 3 ii.0 2 3 England 5 -0.vi 2
Now that we accept created a DataFrame let's presume that we need to add a new column called "lost", which holds the count of total matches each team has lost.
Method 1: Declare and assign a new list as a cavalcade
The simplest way is to create a new list and assign the list to the new DataFrame column. Let united states of america encounter how we tin achieve this with an case.
# import pandas library import pandas every bit pd # create pandas DataFrame df = pd.DataFrame({'team': ['India', 'South Africa', 'New Zealand', 'England'], 'points': [10, eight, 3, 5], 'runrate': [0.five, i.iv, 2, -0.6], 'wins': [v, 4, 2, 2]}) # print the DataFrame print(df) # declare a new list and add the values into the list match_lost = [ii, 1, three, four] # assign the list to the new DataFrame Column df["lost"] = match_lost # Impress the new DataFrame print(df)
Output
team points runrate wins lost 0 India 10 0.v 5 2 ane South Africa 8 ane.4 four 1 two New Zealand 3 2.0 two three 3 England v -0.6 two four
Method two: Using the DataFrame.insert() method
The disadvantage of the higher up approach is that nosotros cannot add together the cavalcade at the specified position, and by default, the column is inserted towards the end, making it the last column.
We tin overcome the consequence using thepandas.DataFrame.insert()
method. This method is useful when you need to insert a new column in a specific position or index.
In the below example, let u.s. insert the new column "lost" before the "wins" cavalcade. Nosotros tin can achieve this by inserting a new column at index 2.
# import pandas library import pandas as pd # create pandas DataFrame df = pd.DataFrame({'team': ['India', 'South Africa', 'New Zealand', 'England'], 'points': [x, viii, 3, v], 'runrate': [0.5, one.iv, 2, -0.half-dozen], 'wins': [v, 4, ii, ii]}) # print the DataFrame print(df) # insert the new column at the specific position df.insert(3, "lost", [2, 1, 3, 4], True) # Print the new DataFrame print(df)
Output
team points runrate lost wins 0 India 10 0.5 two v 1 Southward Africa eight 1.4 1 4 2 New Zealand 3 ii.0 3 2 three England v -0.6 iv 2
Method iii: Using the DataFrame.assign() method
Thepandas.DataFrame.assign()
method is used if we need to create multiple new columns in a DataFrame.
This method returns a new object with all original columns in improver to new ones. All the existing columns that are re-assigned will exist overwritten.
In the below example, we are calculation multiple columns to Pandas DataFrame.
# import pandas library import pandas as pd # create pandas DataFrame df = pd.DataFrame({'team': ['India', 'South Africa', 'New Zealand', 'England'], 'points': [ten, eight, 3, 5], 'runrate': [0.five, 1.4, 2, -0.6], 'wins': [five, four, ii, two]}) # print the DataFrame impress(df) # append multiple columns to Pandas DataFrame df2 = df.assign(lost=[2, i, 3, 4], matches_remaining=[2, 3, 1, 1]) # Print the new DataFrame print(df2)
Output
team points runrate wins lost matches_remaining 0 India 10 0.5 5 two 2 1 South Africa 8 1.four iv 1 3 two New Zealand three ii.0 two iii 1 3 England five -0.6 2 4 1
Method 4: Using the pandas.concat() method
We can also leverage thepandas.concat()
method to concatenate a new column to a DataFrame by passing centrality=ane as an statement. This method returns a new DataFrame later concatenating the columns.
# import pandas library import pandas as pd # create pandas DataFrame df = pd.DataFrame({'team': ['India', 'Due south Africa', 'New Zealand', 'England'], 'points': [10, 8, 3, five], 'runrate': [0.5, 1.4, 2, -0.6], 'wins': [5, 4, ii, two]}) # impress the DataFrame impress(df) # create a new DataFrame df2 = pd.DataFrame([[one, 2], [2, one], [3, 4], [0, 3]], columns=['matches_left', 'lost']) # concat and Print the new DataFrame impress(pd.concat([df, df2], axis=1))
Output
team points runrate wins matches_left lost 0 India 10 0.5 5 1 ii 1 South Africa eight 1.4 four 2 1 ii New Zealand iii ii.0 2 3 four three England v -0.vi 2 0 three
Method 5: Using the Dictionary
Another trick is to create a dictionary to add a new column in Pandas DataFrame. We can employ the existing columns equally Key to the dictionary and assign values respectively to the new cavalcade.
# import pandas library import pandas as pd # create pandas DataFrame df = pd.DataFrame({'team': ['Republic of india', 'South Africa', 'New Zealand', 'England'], 'points': [10, viii, three, v], 'runrate': [0.v, 1.iv, 2, -0.6], 'wins': [5, 4, 2, ii]}) # impress the DataFrame print(df) # Create a new dictionary with keys as existing column # and the values of new column match_lost = {ii: 'India', 1: 'South Africa', 3: 'New Zealand', 0: 'England'} # assign the lexicon to the DataFrame Column df['lost'] = match_lost # print Dataframe impress(df)
Output
team points runrate wins lost 0 India 10 0.five 5 ii 1 Southward Africa eight 1.four iv 1 2 New Zealand 3 2.0 2 3 three England v -0.6 2 0
Conclusion
In this article, we saw the five approaches creating and assigning a list, insert()
, assign()
, concat()
and dictionary to insert new columns into Pandas DataFrame or overwrite the existing ones. Depending on the need and the requirement, you lot can choose i of the methods specified which are more suitable.
How To Add Data To New Column Pandas,
Source: https://itsmycode.com/adding-new-column-to-existing-dataframe-in-pandas/
Posted by: shiresplesn1976.blogspot.com
0 Response to "How To Add Data To New Column Pandas"
Post a Comment