Aligning the data types and column order across all three data frames before attempting to union them together solved the problem. The below snippet highlights what was happening.
data = [[2021, "test", "Albany", "M", 42]]
df1 = spark.createDataFrame(data, schema="Year int, First_Name STRING, County STRING, Sex STRING, Count int")
data2 = [["M", 2021, "test", "Albany", 42]]
df2 = spark.createDataFrame(data2, schema="Sex STRING, Year int, First_Name STRING, County STRING, Count int")
df3 = df1.union(df2)
display(df3)