Jak można zmodyfikować format danych wyjściowych z operacji grupowej w pandach, która tworzy notację naukową dla bardzo dużych liczb?
Wiem, jak wykonać formatowanie ciągów znaków w Pythonie, ale nie mam pojęcia, jak je tutaj zastosować.
df1.groupby('dept')['data1'].sum()
dept
value1 1.192433e+08
value2 1.293066e+08
value3 1.077142e+08
To pomija notację naukową, jeśli konwertuję na ciąg, ale teraz zastanawiam się tylko, jak sformatować ciąg i dodać dziesiętne.
sum_sales_dept.astype(str)
python
pandas
floating-point
scientific-notation
number-formatting
horatio1701d
źródło
źródło
dtypes
twoim wynikiem?Odpowiedzi:
To prawda, odpowiedź, którą podałem w komentarzach, nie jest zbyt pomocna. W ten sposób możesz określić własny konwerter ciągów.
Nie jestem pewien, czy jest to preferowany sposób, ale działa.
Przekształcanie liczb na ciągi wyłącznie ze względów estetycznych wydaje się złym pomysłem, ale jeśli masz dobry powód, jest jeden sposób:
źródło
pandas.option_context
(patrz pandas.pydata.org/pandas-docs/stable/generated/ ... ).pd.set_option('display.float_format', lambda x: f'{x:,.3f}')
jeśli chcesz również separatora tysięcy.Oto inny sposób na zrobienie tego, podobny do odpowiedzi Dana Allana, ale bez funkcji lambda:
lub
źródło
Możesz użyć funkcji round, aby wyłączyć notację naukową dla określonej ramki danych:
lub możesz wyłączyć to globalnie przez:
źródło
Jeśli chcesz stylizować dane wyjściowe ramki danych w komórce notatnika jupyter, możesz ustawić styl wyświetlania na podstawie poszczególnych ramek danych:
Zobacz dokumentację tutaj .
źródło
Jeśli chcesz użyć wartości, powiedzmy jako części pliku csv csv.writer, liczby można sformatować przed utworzeniem listy:
źródło