Почему сводная таблица изменила отображение с плавающей точкой на что-то другое? - PullRequest
0 голосов
/ 17 октября 2019

Я хочу изменить формат отображения таблицы, чтобы я использовал pivot_table, но окончательный результат полностью изменился, я не знаю почему.

Вот мой код.

import pandas as pd
df = pd.DataFrame(
    [
        ('2015/1/1', 73.23234, 'salgrp'), 
        ('2015/2/1', 53.23234, 'salgrp'), 
        ('2015/3/1', 0.00, 'salgrp'), 
        ('2015/2/1', 30.3, 'salnic'), 
        ('2015/3/1', 10, 'salnic'), 
        ('2015/4/1', 31.2, 'saldsc'), 
        ('2015/5/1', 33.23234, 'saldsc'), 
    ], 
    columns=['date', 'amount', 'formula'])
df = df.round(2)
print(df)
df = df.pivot_table(columns=['date'], index=['formula'], values=['amount'])
print(df)

А вот и вывод.

       date  amount formula
0  2015/1/1   73.23  salgrp
1  2015/2/1   53.23  salgrp
2  2015/3/1    0.00  salgrp
3  2015/2/1   30.30  salnic
4  2015/3/1   10.00  salnic
5  2015/4/1   31.20  saldsc
6  2015/5/1   33.23  saldsc
          amount                                    
date    2015/1/1 2015/2/1 2015/3/1 2015/4/1 2015/5/1
formula                                             
saldsc       NaN      NaN      NaN     31.2    33.23
salgrp     73.23    53.23      0.0      NaN      NaN
salnic       NaN    30.30     10.0      NaN      NaN

Мой вопрос: почему изменился результат сводной таблицы и как сохранить два десятичных знака по всему результату? ? Окончательный результат должен выглядеть следующим образом 0.00 and 31.20 and 10.00

1 Ответ

0 голосов
/ 17 октября 2019

Внутренне они все еще равны float и имеют те же значения. Если вы хотите видеть их в двух десятичных разрядах и используете Jupyter Notebook, вы можете использовать style.format (без print)

(df.pivot_table(index='formula', columns='date', values='amount')
         .style.format("{:.2f}")
)
...