2017-07-07 3 views
2

Je souhaite arrondir uniquement les valeurs dans la base de données à des fins d'affichage, lorsque j'utilise head() ou tail(), mais je souhaite que la structure de données conserve les valeurs d'origine.Comment faire pour arrondir des valeurs uniquement pour l'affichage dans les pandas tout en conservant les originaux dans la base de données?

J'ai essayé d'utiliser la méthode round mais cela modifie les valeurs dans la trame de données d'origine. Je ne souhaite pas créer une copie distincte chaque fois à cette fin.

Existe-t-il un autre moyen que de créer une copie séparée? Editer: J'ai du mal à regarder les valeurs car certaines colonnes ont des notations e^10. Je voudrais juste regarder deux à trois décimales maximum et ne pas jeter un coup d'œil aux valeurs de l'exposant.

Édition 2: Résolu. Merci pour la réponse rapide.

Répondre

5

Vous pouvez modifier temporairement l'option d'affichage:

with pd.option_context('precision', 3): 
    print(df.head()) 

     0  1  2  3  4 
0 -0.462 -0.698 -2.030 0.766 -1.670 
1 0.925 0.603 -1.062 1.026 -0.096 
2 0.589 0.819 -1.040 -0.162 2.467 
3 -1.169 0.637 -0.435 0.584 1.232 
4 -0.704 -0.623 1.226 0.507 0.507 

Ou changer de façon permanente:

pd.set_option('precision', 3) 

Un print(df.head().round(3)) simple, fonctionne également dans ce cas. Ils ne changeront pas le DataFrame en place.

+0

Cela peut être évident, mais 'print (df.head(). Round (3))' ne fonctionnera pas si l'option de précision est inférieure à 3. Autrement dit, 'precision' écrase' round'. –