1. Если в колонке сборник (строки, числа, пропущенные значения). То это тип 'object'. Что означает python object что в свою очередь надо понимать буквально, массив состоит из python объектов.
2. Операция сравнения двух объектов, не является однозначно трактованной операцией, в том числе и по этому в python существуют дандер методы которые позволяют переопределять операторы сравнения (вложить свой смысл что именно ты подразумеваешь по сравнением). Это я к тому что ты должен четко понимать что значит равны.
pandas объекты поддерживают сравнение в его собственной интерпретации и поведении. Если этого достаточно
то, все элементарно. Если сравнение используется для фильтра то такие колонки не хранят.
df = pd.DataFrame({
'A':[1,'a',2],
'B':[1,'a',3]
})
df.loc[df['A'] == df['B']]
Колонкам не обязательно быть из одного и того же фрейма, лишь бы размерность совпадала.
Если же нужно особое понимание сравнения. То пишется функция которая принимает два массива на вход и возвращает массив булевых значений, затем этот массив используется в качестве маски, для осуществления выборки.