Замените '---' на np.nan, добавьте столбцы и fillna на '---'
(a['A'].replace('---', np.nan)+b['B'].replace('---', np.nan)).fillna('---')
Вы можете назначить результат новому фрейму данных или существующему:
df = pd.DataFrame()
df.assign(C = (a['A'].replace('---', np.nan)+b['B'].replace('---', np.nan)).fillna('---'))
ИЛИ
a.assign(C = (a['A'].replace('---', np.nan)+b['B'].replace('---', np.nan)).fillna('---'))