0

I have this df, where 'escalacoes' values are currently as type str:

            apelido escalacoes
0              Keno  2.868.755
1             Pedro  2.483.069
2    Bruno Henrique  1.686.894
3        Hugo Souza    809.186
4   Guilherme Arana  1.314.769
5       Filipe Luís    776.147
6   Thiago Galhardo  2.696.853
7          Vinícius  1.405.012
8              Nenê  1.369.209
9    Jorge Sampaoli  1.255.731
10            Réver  1.505.522
11    Víctor Cuesta  1.220.451

Now I'm trying to convert those string values to numeric and then sort them. I'm trying:

df.escalacoes = pd.to_numeric(df.escalacoes, errors='coerce')

df = df.sort_values('escalacoes', ascending=False).reset_index(drop=True).copy()

But I'm getting:

0        Hugo Souza     809.186
1       Filipe Luís     776.147
2              Keno         NaN
3             Pedro         NaN
4    Bruno Henrique         NaN
5   Guilherme Arana         NaN
6   Thiago Galhardo         NaN
7          Vinícius         NaN
8              Nenê         NaN
9    Jorge Sampaoli         NaN
10            Réver         NaN
11    Víctor Cuesta         NaN

Apparently, pandas does not know how to convert string numbers in the millions to numeric.


How do I achieve this?

2
  • Have you Tried. Df[”col”].Astype(float).astype(”int64) Sorry I am on my phone Commented Oct 11, 2020 at 22:14
  • @Zero, yes, it works. care to answer? Commented Oct 11, 2020 at 22:21

1 Answer 1

1

You'd have to replace the . dots in the strings first. If you're certain your data doesn't have any other issues you could then simply use .astype(int) or pd.to_numeric(.., errors='coerce')

In [25]: df.escalacoes = df.escalacoes.str.replace('.', '').astype(int) / 1000

In [26]: df.sort_values('escalacoes', ascending=False, ignore_index=True)
Out[26]: 
                 apelido  escalacoes
0                   Keno    2868.755
1        Thiago Galhardo    2696.853
2                  Pedro    2483.069
3         Bruno Henrique    1686.894
4                  Réver    1505.522
5               Vinícius    1405.012
6                   Nenê    1369.209
7        Guilherme Arana    1314.769
8         Jorge Sampaoli    1255.731
9          Víctor Cuesta    1220.451
10            Hugo Souza     809.186
11           Filipe Luís     776.147
Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.