Why does merging dataframes writes off some of my data?

You can try this: pd.concat([df1,df2])

It works.

Example:

df1 = pd.DataFrame(np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]),
                   columns=['a', 'b', 'c'])
df2 = pd.DataFrame(np.array([[11, 22, 33], [44, 55, 66], [77, 88, 99]]),
                   columns=['a', 'b', 'c'])
pd.concat([df1,df2],ignore_index=True)

You will get the table with all elements from two dataframes. ignore_index=True helps to avoid confused numeration of index.

Also you can use:

df1.merge(df2, how='outer')

You should check https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.merge.html