【问题标题】:Pandas Float Formatting熊猫浮点格式
【发布时间】:2019-08-08 06:52:03
【问题描述】:

我是 Python/Pandas 的新手,不知道如何展示我的数据框。 我了解可能不需要更改数据,而是需要更改数据的显示方式。

我有一个如下的数据框:

                         min           max          mean
marketCap(EUR)  6.110331e+10  2.837429e+11  1.275993e+11
price(EUR)      3.679996e+03  1.694395e+04  7.538254e+03
generatedCoins  1.000000e+03  2.437500e+03  1.921524e+03
paymentCount    2.386370e+05  8.086800e+05  4.019127e+05
min     float64
max     float64
mean    float64
dtype: object

但希望它显示如下:

                   min       max     average
marketcap(EUR)    61.10    283.74     127.59
price(EUR)      3679.99  16943.95    7538.25
generatedCoins  1000.00   2437.50    1921.52
paymentCount  238637.00 808680.00  401912.66

我需要更改哪些内容才能根据需要格式化我的输出?

这是我用于数据框的代码:

ResultDataFrameEUR = pd.DataFrame(0, index=['marketCap(EUR)','price(EUR)','generatedCoins','paymentCount'], columns = ['min','max','mean'])  #Create new DataFrame for Output and fill it with 0
ResultDataFrameEUR.loc['marketCap(EUR)'] = BtcDataFrameEUR['marketCap(EUR)'].agg(['min', 'max', 'mean'])
ResultDataFrameEUR.loc['price(EUR)'] = BtcDataFrameEUR['price(EUR)'].agg(['min', 'max', 'mean'])
ResultDataFrameEUR.loc['generatedCoins'] = BtcDataFrameEUR['generatedCoins'].agg(['min', 'max', 'mean'])
ResultDataFrameEUR.loc['paymentCount'] = BtcDataFrameEUR['paymentCount'].agg(['min', 'max', 'mean'])

【问题讨论】:

    标签: python pandas floating-point


    【解决方案1】:

    更改浮动的显示选项:

    import pandas as pd
    
    pd.options.display.float_format = '{:.2f}'.format
    
    print(df)
    #                          min             max            mean
    #marketCap(EUR) 61103310000.00 283742900000.00 127599300000.00
    #price(EUR)            3680.00        16943.95         7538.25
    #generatedCoins        1000.00         2437.50         1921.52
    #paymentCount        238637.00       808680.00       401912.70
    

    您似乎还想以十亿为单位显示第一行,所以这样做:

    df.loc['marketCap(EUR)'] = df.loc['marketCap(EUR)']/10**9
    
    #                     min       max      mean
    #marketCap(EUR)     61.10    283.74    127.60
    #price(EUR)       3680.00  16943.95   7538.25
    #generatedCoins   1000.00   2437.50   1921.52
    #paymentCount   238637.00 808680.00 401912.70
    

    或者也许不要更改数据并添加,以分隔每3个数量级:

    pd.options.display.float_format = '{:,.2f}'.format
    
    #                             min                max               mean
    #marketCap(EUR) 61,103,310,000.00 283,742,900,000.00 127,599,300,000.00
    #price(EUR)              3,680.00          16,943.95           7,538.25
    #generatedCoins          1,000.00           2,437.50           1,921.52
    #paymentCount          238,637.00         808,680.00         401,912.70
    

    【讨论】:

    • 难以置信!谢谢@Alollz。在 2 次浮点数被舍入“3680.00”而不是“3679.99”和“127.60”而不是“127.59”,为什么会这样?
    • @forceorange 因为它们确实是 3679.996,额外的千分位数字会使四舍五入上升。
    猜你喜欢
    • 2019-06-20
    • 2012-05-27
    • 1970-01-01
    • 2020-04-30
    • 1970-01-01
    • 2018-06-05
    • 1970-01-01
    • 2016-02-11
    • 2020-06-17
    相关资源
    最近更新 更多