web-dev-qa-db-fra.com

Supprimer le format scientifique dans une colonne de trame de données

J'ai une colonne appelée accountnumber avec des valeurs similaires à 4.11889000e + 11 dans une trame de données pandas. Je souhaite supprimer la notation scientifique et convertir les valeurs en 4118890000. J'ai essayé la méthode suivante et l'ai fait ne fonctionne pas.

df = pd.read_csv(data.csv)
pd.options.display.float_format = '{:,.3f}'.format

Veuillez recommander.

8
iprof0214

Je suppose que la notation exponentielle des numéros de compte doit provenir du fichier de données. Si je crée un petit csv avec les numéros de compte complets, pandas les interprétera comme des entiers.

     acct_num
0  4118890000
1  9876543210

df['acct_num'].dtype
Out[51]: dtype('int64')

Cependant, si les numéros de compte dans le csv sont représentés en notation exponentielle alors pandas les lira comme des flottants.

       acct_num
0  4.118890e+11
1  9.876543e+11

df['acct_num'].dtype
Out[54]: dtype('float64')

Vous avez 2 options. Tout d'abord, corrigez le processus qui crée le csv afin que les numéros de compte soient écrits correctement. La seconde consiste à changer le type de données de la colonne acct_num en entier.

df['acct_num'] = df['acct_num'].astype('int64')

df
Out[66]: 
       acct_num
0  411889000000
1  987654321000
5
floydn

Vous n'avez pas besoin des mille séparateurs "," et des 3 décimales pour les numéros de compte.

Utilisez plutôt ce qui suit.

pd.options.display.float_format = '{:.0f}'.format
5
user1319128