Предполагая, что я хорошо понял ваш вопрос, вы на самом деле на расстоянии одной функции:
for i in A:
df[i] = df['C'].str.contains(i).astype(int)
Однако, если вы уже вычислили логические значения, вы можете:
df[A] = df[A].astype(int)
или
df[A]=df[A].replace({True:1, False:0})