См. https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.merge.html.
import pandas as pd
df_jan = pd.DataFrame({"VIN": [1111, 1112, 1113], "Mileage": [700, 250, 640],
"HQ": ["Seattle", "Seattle", "Portland"]})
df_feb = pd.DataFrame({"VIN": [1111, 1112, 1114, 1115, 1116], "Mileage": [220, 860, 120, 520, 100],
"HQ": ["Seattle", "Seattle", "Portland", "Portland", "Seattle"]})
df_mar = pd.DataFrame({"VIN": [1111, 1112, 1114, 1116, 1117], "Mileage": [20, 40, 350, 140, 50],
"HQ": ["Seattle", "Seattle", "Portland", "Seattle", "Seattle"]})
df_apr = pd.DataFrame({"VIN": [1112, 1114, 1116, 1117, 1118], "Mileage": [430, 140, 420, 530, 220],
"HQ": ["Seattle", "Portland", "Seattle", "Seattle", "Bellevue"]})
df = pd.DataFrame(columns=["VIN", "HQ"])
df = pd.merge(left=df, right=df_jan, on=["VIN", "HQ"], how="outer")
df.rename(columns={"Mileage": "Jan Mileage"}, inplace=True)
df = pd.merge(left=df, right=df_feb, on=["VIN", "HQ"], how="outer")
df.rename(columns={"Mileage": "Feb Mileage"}, inplace=True)
df = pd.merge(left=df, right=df_mar, on=["VIN", "HQ"], how="outer")
df.rename(columns={"Mileage": "Mar Mileage"}, inplace=True)
df = pd.merge(left=df, right=df_apr, on=["VIN", "HQ"], how="outer")
df.rename(columns={"Mileage": "Apr Mileage"}, inplace=True)
df = df[["VIN", "Jan Mileage", "Feb Mileage", "Mar Mileage", "Apr Mileage", "HQ"]]