Wie kann man das Format für die Ausgabe einer Groupby-Operation in Pandas ändern, die eine wissenschaftliche Notation für sehr große Zahlen erzeugt?
Ich weiß, wie man Zeichenfolgen in Python formatiert, aber ich bin ratlos, wenn es darum geht, sie hier anzuwenden.
df1.groupby('dept')['data1'].sum()
dept
value1 1.192433e+08
value2 1.293066e+08
value3 1.077142e+08
Dies unterdrückt die wissenschaftliche Notation, wenn ich in eine Zeichenfolge konvertiere, aber jetzt frage ich mich nur, wie das Zeichenfolgenformat formatiert und Dezimalstellen hinzugefügt werden sollen.
sum_sales_dept.astype(str)
python
pandas
floating-point
scientific-notation
number-formatting
horatio1701d
quelle
quelle
dtypes
Ergebnisse?Antworten:
Zugegeben, die Antwort, die ich in den Kommentaren verlinkt habe, ist nicht sehr hilfreich. Sie können Ihren eigenen String-Konverter so angeben.
Ich bin mir nicht sicher, ob dies der bevorzugte Weg ist, aber es funktioniert.
Das Umwandeln von Zahlen in Zeichenfolgen aus rein ästhetischen Gründen scheint eine schlechte Idee zu sein. Wenn Sie jedoch einen guten Grund haben, ist dies eine Möglichkeit:
quelle
pandas.option_context
(siehe pandas.pydata.org/pandas-docs/stable/generated/… ).pd.set_option('display.float_format', lambda x: f'{x:,.3f}')
wenn Sie auch tausend Trennzeichen wollen.Hier ist eine andere Möglichkeit, ähnlich wie bei Dan Allan, jedoch ohne die Lambda-Funktion:
oder
quelle
Sie können die Rundungsfunktion nur verwenden, um die wissenschaftliche Notation für einen bestimmten Datenrahmen zu unterdrücken:
oder Sie können unterdrücken, ist global durch:
quelle
Wenn Sie die Ausgabe eines Datenrahmens in einer Jupyter-Notebook-Zelle formatieren möchten, können Sie den Anzeigestil für jeden Datenrahmen festlegen:
Siehe die Dokumentation hier .
quelle
Wenn Sie die Werte beispielsweise als Teil von csvfile csv.writer verwenden möchten, können die Zahlen vor dem Erstellen einer Liste formatiert werden:
quelle