You would only expect the result of the merge to have the same number of rows as the largest table, if the key by which the merge is done is unique. Your result implies it has duplicates. (In either df1 , df2 , or both)
The output of the merge will have more rows than df1 if there are multiple rows in df2 that meet the merge condition. You don't say what columns you are merging on. In this example, I merge on var1 and get one extra row because df2 has var1 equal to 11 in two rows.