0

我想更改表格显示格式,所以我使用了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

4

1 回答 1

1

在内部,它们仍然float具有相同的值。如果您确实希望以两位小数查看它们并且您使用的是 Jupyter Notebook,则可以使用style.format(without print)

(df.pivot_table(index='formula', columns='date', values='amount')
         .style.format("{:.2f}")
)
于 2019-10-17T13:09:32.000 回答