Dies unterdrückt die wissenschaftliche Notation, wenn ich in Strings umwandle, aber jetzt frage ich mich nur, wie man Strings formatiert und Dezimalstellen hinzufügt.
sum_sales_dept.astype(str)
mögliches Duplikat von Suppressing scientific notation in pandas?
– Dan Allan
15. Januar 2014 um 13:13 Uhr
Ich habe diese Frage gesehen, aber ich bin mir nicht sicher, wie das mir hilft. Ich versuche nur, den aktuellen dtype, der Float ist, beizubehalten und anstelle der wissenschaftlichen Notation einfach alle Dezimalstellen im Ergebnis anzuzeigen.
– horatio1701d
15. Januar 2014 um 13:52 Uhr
Das ist wahrscheinlich nur eine Anzeigesache. Wenn Sie jedoch der Meinung sind, dass sich Ihr Problem durch etwas Besonderes von dem in Dans Link unterscheidet, müssen Sie weitere Informationen zu Ihrem Problem posten, vorzugsweise mit einem kleinen Datensatz, der das Problem reproduziert. Auch was sind die dtypes zu deinem Ergebnis?
– Tom Augspurger
15. Januar 2014 um 14:18 Uhr
Zugegeben, die Antwort, die ich in den Kommentaren verlinkt habe, ist nicht sehr hilfreich. Sie können Ihren eigenen String-Konverter so angeben.
In [25]: pd.set_option('display.float_format', lambda x: '%.3f' % x)
In [28]: Series(np.random.randn(3))*1000000000
Out[28]:
0 -757322420.605
1 -1436160588.997
2 -1235116117.064
dtype: float64
Ich bin mir nicht sicher, ob das der bevorzugte Weg ist, dies zu tun, aber es funktioniert.
Das Konvertieren von Zahlen in Zeichenfolgen aus rein ästhetischen Gründen scheint eine schlechte Idee zu sein, aber wenn Sie einen guten Grund haben, ist dies eine Möglichkeit:
Dies geschieht oft nicht aus ästhetischen Gründen, sondern zum schnelleren Überfliegen von Informationen über den visuellen Kortex über große numerische Datenrahmen.
– Matanster
20. April 2019 um 18:57 Uhr
pd.set_option(‘display.float_format’, lambda x: ‘%.3f’ % x) hat auch bei mir funktioniert
– angetriebene_spinne
28. Mai 2019 um 17:19 Uhr
Dies funktioniert und Sie können auch die neuere f-String-Notation verwenden. Wie pd.set_option('display.float_format', lambda x: f'{x:,.3f}') wenn Sie auch ein Tausendertrennzeichen wollen.
– 576i
29. Oktober 2019 um 10:26 Uhr
tfans
Hier ist eine andere Möglichkeit, ähnlich der Antwort von Dan Allan, jedoch ohne die Lambda-Funktion:
Ich denke, die Verwendung einer Formatzeichenfolge wäre für Teammitglieder zugänglicher, die mit Python weniger vertraut sind und Lambda-Funktionen möglicherweise nicht verstehen.
– Steven C. Howell
12. Oktober 2018 um 15:04 Uhr
Sie können die Rundungsfunktion verwenden, um die wissenschaftliche Notation für einen bestimmten Datenrahmen zu unterdrücken:
df1.round(4)
oder Sie können es global unterdrücken, indem Sie:
pd.options.display.float_format="{:.4f}".format
Wenn Sie die Ausgabe eines Datenrahmens in einer Jupyter-Notebook-Zelle gestalten möchten, können Sie den Anzeigestil pro Datenrahmen festlegen:
Das globale Festlegen einer festen Anzahl von Dezimalstellen ist oft eine schlechte Idee, da es unwahrscheinlich ist, dass es eine angemessene Anzahl von Dezimalstellen für alle Ihre verschiedenen Daten gibt, die Sie unabhängig von der Größe anzeigen. Versuchen Sie stattdessen Folgendes, das Ihnen nur für große und sehr kleine Werte eine wissenschaftliche Notation gibt (und ein Tausendertrennzeichen hinzufügt, es sei denn, Sie lassen das “,” weg):
Das Minus davon ist, dass, wenn Sie die letzte 0 im Float haben, es abgeschnitten wird. Es wird also nicht 0,000070, sondern 0,00007 sein.
Vielen Dank! Die erste Option schlägt jedoch in bestimmten Fällen fehl.
– Ethan
5. Dezember 2021 um 0:21 Uhr
Gibbon
Als Erweiterung dieses nützlichen Kommentars finden Sie hier eine Lösung, bei der die Formatierungsoptionen nur so eingestellt werden, dass die Ergebnisse angezeigt werden, ohne die Optionen dauerhaft zu ändern:
mögliches Duplikat von Suppressing scientific notation in pandas?
– Dan Allan
15. Januar 2014 um 13:13 Uhr
Ich habe diese Frage gesehen, aber ich bin mir nicht sicher, wie das mir hilft. Ich versuche nur, den aktuellen dtype, der Float ist, beizubehalten und anstelle der wissenschaftlichen Notation einfach alle Dezimalstellen im Ergebnis anzuzeigen.
– horatio1701d
15. Januar 2014 um 13:52 Uhr
Das ist wahrscheinlich nur eine Anzeigesache. Wenn Sie jedoch der Meinung sind, dass sich Ihr Problem durch etwas Besonderes von dem in Dans Link unterscheidet, müssen Sie weitere Informationen zu Ihrem Problem posten, vorzugsweise mit einem kleinen Datensatz, der das Problem reproduziert. Auch was sind die
dtypes
zu deinem Ergebnis?– Tom Augspurger
15. Januar 2014 um 14:18 Uhr