Перевести экспоненциальную запись в обычную

У меня есть следующий датасет: введите сюда описание изображения

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 шт):

Автор решения: Danis
def f(x):
    n = x.split('+')
    return float(n[0]) * 10 ** int(n[1])

Более правильный вариант:

def f(x):
    return float(x)
→ Ссылка
Автор решения: MarianD

Есть разница между тем, что в таблице сохранено, и тем, как это изображено.

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
→ Ссылка
Автор решения: MaxU

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
→ Ссылка