Olá Rodrigo, tudo bem ? Espero que sim.
Esse problema apareceu porque o DataFrame tem um espaço no nome das colunas sales, profit e rank, você pode verificar isso acessando o atributo columns .
Código:
empresas_brasileiras.columns
Resultado:
Index(['rank ', 'global company', 'country', 'sales ', 'profit ', 'assets',
'market value'],
dtype='object')
Para resolver isso podemos utilizar o método strip que remove espaços de strings e sobrescrever o nome das colunas. Para isso vamos acessar o columns, depois o str para acessar o nome de cada coluna e por ultimo o método strip(), vamos atribuir esses novos nomes para o mesmo atributo empresas_brasileiras.columns
Código:
empresas_brasileiras.columns = empresas_brasileiras.columns.str.strip()
Agora podemos acessar o atributo e verificar que os espaços sumiram.
Código:
empresas_brasileiras.columns
Resultado:
Index(['rank', 'global company', 'country', 'sales', 'profit', 'assets',
'market value'],
dtype='object')
E agora seu código vai funcionar.
Código:
colunas_para_verificar = ['sales', 'profit', 'assets', 'market value']
# print(empresas_brasileiras.loc[:, colunas_para_verificar])
empresas_brasileiras.loc[:, colunas_para_verificar] = empresas_brasileiras.loc[:, colunas_para_verificar].replace({'$': ''}, regex= True)
empresas_brasileiras
Resultado:
| rank | global company | country | sales | profit | assets | market value |
|---|
| 64 | 65 | Petrobras | Brazil | $83.89 B | $19.77 B | $174.68 B | $83.98 B |
| 116 | 117 | Vale | Brazil | $54.4 B | $22.47 B | $89.61 B | $82.03 B |
| 136 | 137 | Itaú Unibanco Holding | Brazil | $35.96 B | $4.96 B | $372.3 B | $52.89 B |
| 180 | 181 | Banco Bradesco | Brazil | $28.33 B | $4.07 B | $296.89 B | $43.16 B |
| 266 | 267 | Banco do Brasil | Brazil | $29.54 B | $3.4 B | $362.53 B | $20.7 B |
| 398 | 399 | JBS | Brazil | $64.99 B | $3.8 B | $37.18 B | $17.48 B |
| 773 | 774 | Banco Btg Pactual | Brazil | $2.71 B | $848.1 M | $68.31 B | $56.14 B |
| 952 | 953 | Braskem | Brazil | $19.57 B | $2.59 B | $16.62 B | $6.76 B |
| 961 | 962 | Gerdau (Cosigua) | Brazil | $14.52 B | $2.87 B | $13.25 B | $10.16 B |
| 991 | 992 | Suzano Papel e Celulose | Brazil | $7.59 B | $1.6 B | $21.36 B | $14.66 B |
| 1002 | 1002 | Eletrobrás | Brazil | $6.97 B | $1.05 B | $33.42 B | $13.42 B |
| 1140 | 1141 | Itaúsa | Brazil | $1.51 B | $2.26 B | $15.44 B | $18.42 B |
| 1257 | 1257 | Raizen | Brazil | $30.14 B | $619 M | $18.86 B | $1.36 B |
| 1323 | 1324 | CSN | Brazil | $8.88 B | $2.27 B | $14.25 B | $6.22 B |
| 1456 | 1456 | XP | Brazil | $2.31 B | $665.9 M | $25.02 B | $14.29 B |
| 1469 | 1470 | Metalurgica Gerdau | Brazil | $14.52 B | $904.1 M | $13.39 B | $2.6 B |
| 1494 | 1495 | Marfrig Global Foods | Brazil | $15.82 B | $804.6 M | $8.62 B | $2.62 B |
| 1538 | 1539 | B3 | Brazil | $1.71 B | $874.2 M | $9.63 B | $18.37 B |
| 1544 | 1545 | WEG | Brazil | $4.37 B | $664.5 M | $4.3 B | $27.68 B |
| 1653 | 1652 | Usiminas | Brazil | $6.47 B | $1.75 B | $8.23 B | $3.1 B |
| 1808 | 1807 | Ultrapar Participacoes | Brazil | $20.34 B | $157.6 M | $6.99 B | $3.26 B |
| 1852 | 1853 | CPFL Energia | Brazil | $7.27 B | $879.9 M | $11.87 B | $8.47 B |
| 1942 | 1943 | Bradespar | Brazil | $0 M | $1.5 B | $1.36 B | $2.43 B |
Um ponto é que o replace vai apenas substituir quando ele encontrar apenas o $ sozinho.
Uma sugestão que eu deixo é utilizar o replace do Series.str
empresas_brasileiras['sales'].str.replace('$','',regex=False)
Espero ter ajudado e qualquer duvida não hesite em perguntar.
Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!