【问题标题】:pandas converting a float remove exponents转换浮点数的熊猫删除指数
【发布时间】:2019-01-21 23:06:19
【问题描述】:

我的数据如下所示:

Date            MBs     GBs
0   2018-08-14 20:10    32.00 MB    0.00 GB
1   2018-08-14 20:05    4.00 MB     0.00 GB
2   2018-08-14 20:00    1000.99 MB  1.23 GB

我通过这样做去掉了 MB 和 GB:

df['MBs']=df['MB'].str.strip('MB')
df['GBs']=df['GB'].str.strip('GB')

然后将数字转换为浮点数并得到总数:

df['MBs'] = df['MBs'].astype('float')
df['GBs'] = df['MBs'].astype('float')

df.loc['Total', ['MBs', 'GBs']] = df.sum()

但是当我运行它时,我的数据有指数

Date    Data Transferred (MB)   Data Transferred (GB)
146 2018-08-14 08:00:00 1.871237e+05    1.874017e+05
147 2018-08-14 07:55:00 1.123211e+05    1.961854e+05
148 2018-08-14 07:50:00 2.187703e+05    2.187123e+05
...
Total       1.408910e+08    1.408910e+08

如何将浮点数的变化从指数转换为“正常”,我只转换它是因为我需要得到总数

【问题讨论】:

    标签: python pandas dataframe jupyter-notebook


    【解决方案1】:

    这就是 pandas 表示浮点数的方式,这不是你要改变的。但是,如果将数据格式化为字符串,则可以更改表示形式。

    # Don't run this line.
    # df = pd.concat([df] * 10000, ignore_index=True) 
    # This should be run on the *unstripped* version of your DataFrame.
    df.loc['Total', ['MBs', 'GBs']] = (
        df[['MBs', 'GBs']]
           .stack()
           .str.split()
           .str[0]
           .astype(float)
           .unstack()
           .sum()
           .agg('{:.2f}'.format))
    
    df.tail()
    
                       Date          MBs       GBs
    29996  2018-08-14 20:00   1000.99 MB   1.23 GB
    29997  2018-08-14 20:10     32.00 MB   0.00 GB
    29998  2018-08-14 20:05      4.00 MB   0.00 GB
    29999  2018-08-14 20:00   1000.99 MB   1.23 GB
    Total               NaN  10369900.00  12300.00
    

    【讨论】:

      【解决方案2】:

      你试图避免使用科学记数法:所以你可以这样做:

      import pandas as pd
      pd.set_option('display.float_format', lambda x: '%.3f' % x)
      

      这行代码设置了pandas的显示格式,所以不会使用科学记数法

      参考:http://pandas.pydata.org/pandas-docs/stable/options.html?highlight=display%20float_format

      【讨论】:

      • 此解决方案的好处是您不是在操纵数据框本身,而是操纵它的显示方式。此外,这将应用于任何地方,而不适用于数据框中的特定值。
      猜你喜欢
      • 2019-12-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-14
      • 1970-01-01
      • 2020-02-07
      • 2018-02-13
      • 2021-04-26
      相关资源
      最近更新 更多