Oi Guilherme,
O método withColumn() retorna um novo DataFrame substituindo uma coluna existente ou criando uma nova. O primeiro argumento do método é o nome que você quer atribuir a nova coluna. Caso este nome já seja o nome de uma das colunas do DataFrame de origem, está coluna será substituída.
O segundo argumento do método é o comando que irá criar o conteúdo da nova coluna.
No exemplo que você trouxe, estamos substituindo a coluna 'capital_social_da_empresa' do DataFrame empresas com a conversão do valor desta mesma coluna do DataFrame para o tipo double.
empresas = empresas.withColumn('capital_social_da_empresa', empresas['capital_social_da_empresa'].cast(DoubleType()))
Um aviso importante é que neste segundo argumento não é possível realizar operações com colunas de um outro DataFrame.
Espero ter ajudado e bons estudos