{"id":5196,"date":"2021-05-10T09:32:36","date_gmt":"2021-05-10T04:02:36","guid":{"rendered":"https:\/\/python-programs.com\/?p=5196"},"modified":"2021-11-22T18:45:28","modified_gmt":"2021-11-22T13:15:28","slug":"pandas-how-to-merge-dataframes-by-index-using-dataframe-merge","status":"publish","type":"post","link":"https:\/\/python-programs.com\/pandas-how-to-merge-dataframes-by-index-using-dataframe-merge\/","title":{"rendered":"Pandas : How to merge Dataframes by index using Dataframe.merge()"},"content":{"rendered":"
In this article we are going to see how we can merge two dataframes by using index of both the dataframes or by suing index of one dataframe and some columns of the other dataframe, and how we can keep a merged dataframe with similar indices. So, let’s start the exploring the topic.<\/p>\n
SYNTAX :<\/p>\n
DataFrame.merge(right, how='inner', on=None, left_on=None, right_on=None, index_left=False, index_right=False, sort=False, suffixes=('_x', '_y'), copy=True, indicator=False, validate=None)<\/pre>\nFor this short example, we will only focus on some arguments :<\/p>\n
To demonstrate we will be taking the following two dataframes :<\/p>\n
Left dataframe :<\/p>\n
\u00a0 \u00a0Regd\u00a0\u00a0\u00a0\u00a0 Name\u00a0 \u00a0 Age\u00a0 \u00a0 \u00a0 \u00a0 City\u00a0 \u00a0 \u00a0 \u00a0 \u00a0Exp\r\n0\u00a0\u00a0\u00a0 10\u00a0 \u00a0 \u00a0 \u00a0 Jill\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 16.0\u00a0\u00a0\u00a0\u00a0 Tokyo\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 10\r\n1\u00a0\u00a0\u00a0 11\u00a0 \u00a0 \u00a0 \u00a0 Rachel\u00a0 \u00a0 38.0\u00a0\u00a0\u00a0\u00a0 Texas\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a05\r\n2\u00a0\u00a0\u00a0 12\u00a0 \u00a0 \u00a0 \u00a0 Kirti\u00a0 \u00a0 \u00a0 \u00a0 39.0\u00a0 \u00a0 \u00a0New York\u00a0 \u00a0 \u00a07\r\n3\u00a0\u00a0\u00a0 13\u00a0 \u00a0 \u00a0 \u00a0 Veena\u00a0 \u00a0 \u00a040.0\u00a0\u00a0\u00a0\u00a0 Texas\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 21\r\n4\u00a0\u00a0\u00a0 14\u00a0 \u00a0 \u00a0 \u00a0 Lucifer\u00a0 \u00a0 NaN\u00a0\u00a0\u00a0\u00a0Texas\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 30\r\n5\u00a0\u00a0\u00a0 15\u00a0 \u00a0 \u00a0 \u00a0 Pablo\u00a0 \u00a0 \u00a0 30.0\u00a0 \u00a0 New York\u00a0 \u00a0 \u00a07\r\n6\u00a0\u00a0\u00a0 16\u00a0 \u00a0 \u00a0 \u00a0 Lionel\u00a0 \u00a0 \u00a045.0\u00a0 \u00a0 Colombia\u00a0 \u00a0 11<\/pre>\nRight dataframe :<\/p>\n
\u00a0 \u00a0Regd\u00a0\u00a0\u00a0\u00a0 Exp\u00a0 \u00a0 \u00a0 \u00a0Wage\u00a0 \u00a0 \u00a0Bonus\r\n0\u00a0\u00a0\u00a0 10\u00a0 \u00a0 \u00a0 \u00a0 Junior\u00a0 \u00a075000\u00a0 \u00a0 \u00a0 2000\r\n1\u00a0\u00a0\u00a0 11\u00a0 \u00a0 \u00a0 \u00a0 Senior\u00a0 \u00a072200\u00a0 \u00a0 \u00a01000\r\n2\u00a0\u00a0\u00a0 12\u00a0 \u00a0 \u00a0 \u00a0 Expert\u00a0 \u00a090999\u00a0 \u00a0 \u00a01100\r\n3\u00a0\u00a0\u00a0 13\u00a0 \u00a0 \u00a0 \u00a0 Expert\u00a0 \u00a090000\u00a0 \u00a0 \u00a01000\r\n4\u00a0\u00a0\u00a0 14\u00a0 \u00a0 \u00a0 \u00a0 Junior\u00a0 \u00a020000\u00a0 \u00a0 \u00a0 2000\r\n5\u00a0\u00a0\u00a0 15\u00a0 \u00a0 \u00a0 \u00a0 Junior\u00a0 \u00a050000\u00a0 \u00a0 \u00a0 1500\r\n6\u00a0\u00a0\u00a0 16\u00a0 \u00a0 \u00a0 \u00a0 Senior\u00a0 \u00a081000\u00a0 \u00a0 \u00a01000<\/pre>\nMerging two Dataframes by index of both the dataframes :<\/h3>\n
Here you might have noticed we have a common column named \u2018Regd\u2019 . So we can merge both the dataframes by passing left_index and right_index as true in the function.<\/p>\n
# Program :\r\n\r\n\r\n# Importing the module\r\nimport pandas as pd\r\nimport numpy as np\r\n\r\n#Left Dataframe\r\nstudents = [(10,'Jill', 16, 'Tokyo', 10),\r\n (11,'Rachel', 38, 'Texas', 5),\r\n (12,'Kirti', 39, 'New York', 7),\r\n (13,'Veena', 40, 'Texas', 21),\r\n (14,'Lucifer', np.NaN, 'Texas', 30),\r\n (15,'Pablo', 30, 'New York', 7),\r\n (16,'Lionel', 45, 'Colombia', 11) ]\r\nlDfObj = pd.DataFrame(students, columns=['Regd','Name','Age','City','Exp'],index=['a', 'b', 'c', 'd', 'e', 'f', 'g'])\r\n\r\n#Right dataframe\r\nwage = [(10, 'Junior', 75000, 2000) ,\r\n (11, 'Senior', 72200, 1000) ,\r\n (12, 'Expert', 90999, 1100) ,\r\n (13, 'Expert', 90000, 1000) ,\r\n (14, 'Junior', 20000, 2000) ,\r\n (15, 'Junior', 50000, 1500) ,\r\n (16, 'Senior', 81000, 1000)]\r\nrDfObj = pd.DataFrame(wage, columns=['Regd','Exp','Wage','Bonus'] , index=['a', 'b', 'c', 'd', 'e', 'f', 'g'])\r\n\r\n#Merging both the dataframes\r\nnewDF = lDfObj.merge(rDfObj, left_index=True, right_index=True)\r\n\r\n#printing the merged dataframe\r\nprint(\"The merged dataframe is-\")\r\nprint(newDF)\r\n\r\n<\/pre>\nOutput :\r\nThe merged dataframe is-\r\n \u00a0 \u00a0Regd_x\u00a0 \u00a0 Name\u00a0 \u00a0 \u00a0Age\u00a0 \u00a0 \u00a0 \u00a0City\u00a0 \u00a0 \u00a0 \u00a0 \u00a0Exp_x\u00a0 Regd_y\u00a0\u00a0 Exp_y\u00a0 \u00a0 \u00a0 Wage\u00a0 \u00a0 \u00a0Bonus\r\na\u00a0\u00a0\u00a0\u00a0\u00a0 10\u00a0 \u00a0 \u00a0 \u00a0 \u00a0Jill\u00a0 \u00a0 \u00a0 \u00a0 \u00a016.0\u00a0 \u00a0 \u00a0 Tokyo\u00a0 \u00a0 \u00a0 \u00a0 \u00a010\u00a0\u00a0\u00a0\u00a0\u00a0 10\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 Junior\u00a0 \u00a0 \u00a075000\u00a0 \u00a0 \u00a0 2000\r\nb\u00a0\u00a0\u00a0\u00a0\u00a0 11\u00a0 \u00a0 \u00a0 \u00a0 Rachel\u00a0 \u00a038.0\u00a0 \u00a0 \u00a0 Texas\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a05\u00a0 \u00a0 \u00a0 \u00a0 11\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 Senior\u00a0 \u00a0 \u00a072200\u00a0 \u00a0 \u00a0 1000\r\nc\u00a0\u00a0\u00a0\u00a0\u00a0 12\u00a0 \u00a0 \u00a0 \u00a0 \u00a0Kirti\u00a0 \u00a0 \u00a0 \u00a039.0\u00a0 \u00a0 \u00a0 New York\u00a0 \u00a0 7\u00a0 \u00a0 \u00a0 \u00a0 12\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0Expert\u00a0 \u00a0 90999\u00a0 \u00a0 \u00a01100\r\nd\u00a0\u00a0\u00a0\u00a0\u00a0 13\u00a0 \u00a0 \u00a0 \u00a0 Veena\u00a0 \u00a0 40.0\u00a0 \u00a0 \u00a0 Texas\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a021\u00a0\u00a0\u00a0\u00a0\u00a0 13\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 Expert\u00a0 \u00a0 \u00a090000\u00a0 \u00a0 \u00a0 1000\r\ne\u00a0\u00a0\u00a0\u00a0\u00a0 14\u00a0 \u00a0 \u00a0 \u00a0 Lucifer\u00a0 \u00a0 NaN\u00a0\u00a0\u00a0\u00a0 Texas\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a030\u00a0\u00a0\u00a0\u00a0\u00a0 14\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 Junior\u00a0 \u00a0 \u00a020000\u00a0 \u00a0 \u00a0 2000\r\nf\u00a0\u00a0\u00a0\u00a0\u00a0 15\u00a0 \u00a0 \u00a0 \u00a0 \u00a0Pablo\u00a0 \u00a0 \u00a0 30.0\u00a0 \u00a0 \u00a0 New York\u00a0 \u00a0 7\u00a0 \u00a0 \u00a0 \u00a0 15\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 Junior\u00a0 \u00a0 \u00a050000\u00a0 \u00a0 \u00a0 1500\r\ng\u00a0\u00a0\u00a0\u00a0\u00a0 16\u00a0 \u00a0 \u00a0 \u00a0Lionel\u00a0 \u00a0 \u00a0 45.0\u00a0 \u00a0 \u00a0 Colombia\u00a0 \u00a0 11\u00a0\u00a0\u00a0\u00a0\u00a0 16\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 Senior\u00a0 \u00a0 \u00a081000\u00a0 \u00a0 \u00a0 1000<\/pre>\nFinally, if we want to merge a dataframe by the index of the first dataframe with some column from the other dataframe, we can also do that.<\/p>\n
Want to expert in the python programming language? Exploring\u00a0Python Data Analysis using Pandas<\/a>\u00a0tutorial changes your knowledge from basic to advance level in python concepts.<\/p>\n
Read more Articles on Python Data Analysis Using Padas<\/strong><\/p>\n
\n
- How to merge Dataframes using Dataframe.merge() in Python?<\/a><\/li>\n
- How to merge Dataframes on specific columns or on index in Python?<\/a><\/li>\n
- Count NaN or missing values in DataFrame<\/a><\/li>\n
- Count rows in a dataframe | all or those only that satisfy a condition<\/a><\/li>\n
- 6 Different ways to iterate over rows in a Dataframe & Update while iterating row by row<\/a><\/li>\n
- Loop or Iterate over all or certain columns of a DataFrame<\/a><\/li>\n
- How to display full Dataframe i.e. print all rows & columns without truncation<\/a><\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"
How to merge Dataframes by index using Dataframe.merge() in Python ? In this article we are going to see how we can merge two dataframes by using index of both the dataframes or by suing index of one dataframe and some columns of the other dataframe, and how we can keep a merged dataframe with …<\/p>\n