2017-07-07 3 views
2

Ich möchte Werte im Datenframe nur für Anzeigezwecke runden, wenn ich head() oder tail() verwende, aber ich möchte, dass der Datenrahmen die ursprünglichen Werte beibehält.Wie werden Werte nur für die Darstellung in Pandas gerundet, während die ursprünglichen im Datenrahmen beibehalten werden?

Ich habe versucht, die Rundungsmethode, aber es ändert die Werte im ursprünglichen Datenrahmen. Ich möchte zu diesem Zweck nicht jedes Mal eine separate Kopie erstellen.

Gibt es eine andere Möglichkeit als eine separate Kopie zu erstellen?

Edit: Ich habe Probleme, Blick auf Werte, weil einige Spalten e^10 Notationen haben. Ich möchte nur auf zwei bis drei Dezimalstellen maximal schauen und nicht weiter auf Exponentenwerte blicken.

Edit 2: Gelöst. Danke für die schnelle Antwort.

Antwort

5

Sie können vorübergehend die Anzeigeoption ändern:

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 

Oder es dauerhaft ändern:

pd.set_option('precision', 3) 

Ein einfaches print(df.head().round(3)) auch in diesem Fall funktionieren würde. Sie werden den DataFrame nicht an Ort und Stelle ändern.

+0

Das mag offensichtlich sein, aber 'print (df.head(). Round (3))' wird nicht funktionieren, wenn die Genauigkeitsoption niedriger als 3 ist. Das heißt, 'precision' überschreibt' round'. –

Verwandte Themen