У меня есть данные, которые выглядят так:
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()
Но когда я запускаю его, у моих данных есть показатели
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
Как мне преобразовать изменение этого числа с плавающей запятой из экспоненты в "нормальный", я конвертирую его только потому, что мне нужно получить итоги






Вот как поплавки представлены пандами, и это не то, что вы меняете. Однако вы можете изменить представление, если отформатируете данные как строку.
# 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
Вы пытаетесь избегать использования научных обозначений: Итак, вот что вы можете сделать:
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
Преимущество этого решения в том, что вы управляете не самим фреймом данных, а способом его отображения. Кроме того, это будет применяться везде, а не для определенных значений в фрейме данных.