转换浮点数的大熊猫删除指数

时间:2018-08-15 03:14:24

标签: python pandas dataframe jupyter-notebook

我有如下数据:

undefined

我这样做是除去了MB和GB:

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

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

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()

如何将浮点型从指数型转换为“普通型”,只转换它,因为我需要获取总数

2 个答案:

答案 0 :(得分:2)

您正试图避免使用科学计数法:因此,您可以执行以下操作:

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

此行代码设置了熊猫的显示格式,因此不会使用科学概念

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

答案 1 :(得分:1)

这就是大熊猫所代表的浮游物,这不是您要更改的东西。但是,如果将数据格式化为字符串,则可以更改表示形式。

# 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