在数据框中用均值估算缺失值后,科学计数法中出现的数字

时间:2019-10-26 21:25:30

标签: python-3.x pandas missing-data

我已经为我的数据集估算了均值缺失值,但是通过此过程,我可以看到数量值以科学格式显示,尽管数据类型仍为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 :(得分:0)

如果您不希望四舍五入数字,可以更改数字在输出中的显示方式

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,将0更改为3,以此类推。

您也可以使用df.apply(lambda x: '%.0f' % x, axis=1)

答案 1 :(得分:0)

 df1['amount'] = df1['amount'].astype('int64')
 df1['start_balance'] = df1['start_balance'].astype('int64')

这对我很好!在另一个步骤中,但仍然有效