Числа, появляющиеся в научной нотации после вменения пропущенных значений со средним в кадре данных - PullRequest
0 голосов
/ 27 октября 2019

Я ввел пропущенные значения со средним значением для моего набора данных, но после этого процесса я вижу, что значения суммы отображаются в научном формате, хотя тип данных все еще float64. Я использовал следующий код:

mean_value1=df1['amount'].mean()
df1['amount']=df1['amount'].fillna(mean_value1)
df1['start_balance']=df1['start_balance'].fillna(mean_value2)
mean_value3=df1['end_balance'].mean()
df1['end_balance']=df1['end_balance'].fillna(mean_value3)
df1 = df1.fillna(df1.mode().iloc[0])
df1.head()

пропущенные значения обрабатываются корректно, но значения начального и конечного баланса приводятся в научной записи. Как я могу предотвратить это? Вывод выглядит следующим образом:

 amount         booking_date    booking_text    date_end_balance    date_start_balance  end_balance month    start_balance  tx_code
-60790.332082   2017-06-30  SEPA-Gutschrift    2017-06-30           2017-06-01          2.693179e+07     June-2017  2.652441e+07    166.0
-10.000000      2016-03-22  GEBUEHREN          2016-03-22           2016-02-22          3.589838e+06    March-2016  3.590838e+06    808.0

Ответы [ 2 ]

0 голосов
/ 27 октября 2019
 df1['amount'] = df1['amount'].astype('int64')
 df1['start_balance'] = df1['start_balance'].astype('int64')

Это хорошо сработало для меня! в другом шаге, но все еще работал

0 голосов
/ 27 октября 2019

Если вы не хотите округлять числа, вы можете изменить способ их отображения в выводе следующим образом

import pandas as pd
df = pd.DataFrame(np.random.random(5)*10000000000, columns=['random'])
pd.set_option('display.float_format', lambda x: '%.0f' % x)

df

, что дает этот вывод

        random
0  7591769472
1 78148991059
2 19880680453
3  1965830619
4 39390983843

вместо этоговыведите

         random
0  6.704323e+10
1  6.714734e+10
2  8.447027e+09
3  3.051957e+10
4  1.481439e+09

измените %.0f на любое количество десятичных разрядов, которое вы хотите видеть из чисел, поэтому два изменяют 0 на 2, 3 0 на 3 и т. д.

вы также можете использоватьdf.apply(lambda x: '%.0f' % x, axis=1) а

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...