Перевести экспоненциальную запись в обычную
У меня есть следующий датасет:

month Sku Amount Profit Spasaniya Margin 5 136.555556 10046.3 1.65E+06 144849.9222 400793.3667 5 105.888889 8327.344 9.96E+05 67543.51111 263720.6
Это средние значения продаж товара за 9 месяцев. Почему-то колонка Profit выводится в экспоненциальной записи. Подскажите, как перевести колонку в обычный формат?
И мб кто-то подскажет — почему так получилось?
P.S. самым быстрым и доступным для меня способом пока решила так: просто округлила до 2 знаков после точки round(df.Profit,2).
Но другие варианты очень и очень приветствую, плюс хочу узнать, как избежать такого без доп манипуляций.
Ответы (3 шт):
def f(x):
n = x.split('+')
return float(n[0]) * 10 ** int(n[1])
Более правильный вариант:
def f(x):
return float(x)
Есть разница между тем, что в таблице сохранено, и тем, как это изображено.
Jupyter Notebook (или JupyterLab), который вы используете, изображает значения в стандартном формате. Большие числа типа float изображаются в экспоненциальном формате.
Чтобы изобразить столбец Profit так, как вам нужно, вместо простой команды
df
примените
df.style.format({'Profit': '{:.2f}'})
Результат:
month Sku Amount Profit Spasaniya Margin 0 5 136.556 10046.3 1650000.00 144850 400793 1 5 105.889 8327.34 996000.00 67543.5 263721
MarianD уже объяснил, что данные хранятся в памяти в одном единственном виде, а отображать их можно по-разному. Поэтому пока вам не надо выводить эти данные на печать (например для отчетности), то поможно не обращать внимание на экспоненциальную форму записи.
Если речь идет о выводе на печать / сохранении в Excel / etc. в определенном формате, то это можно сделать так:
Пример исходного DF:
In [4]: df
Out[4]:
month Sku Amount Profit Spasaniya Margin
0 5 136.555556 10046.300 1.650000e+09 144849.92220 400793.3667
1 5 105.888889 8327.344 9.960000e+08 67543.51111 263720.6000
задаем формат явно:
In [5]: pd.set_option("display.float_format", "{:.2f}".format)
результат вывода на экран:
In [6]: df
Out[6]:
month Sku Amount Profit Spasaniya Margin
0 5 136.56 10046.30 1650000000.00 144849.92 400793.37
1 5 105.89 8327.34 996000000.00 67543.51 263720.60