Ah espere - eu acho que tenho. Se eu fizer algo assim, parece funcionar:
null = u'\u0000'
new_df = df.withColumn('e', regexp_replace(df['e'], null, ''))
E, em seguida, mapeando para todas as colunas de string:
string_columns = ['d','e']
new_df = df.select(
*(regexp_replace(col(c), null, '').alias(c) if c in string_columns else c for
c in df.columns)
)