我有一个看起来像这样的数据框-
ID NoNotifications NotificationsNot total Percent of people
2544 272500 762 117 0.0
2415 2288378 256575 655 0.0
2558 192505 470610 7 0.0
我正在跑步-
for index, row in percent.iterrows():
print((117/300000)*100)
row['Percent of people'] = row['total']/(row['NoNotifications'] + row['NotificationsNot'])*100
为什么print语句以至少3个精度点打印一个十进制值。例如,0.039
,但是第二条语句仅将0.0
输出到Percent of people
列。
更新
我尝试了row['Percent of people'] = (655/254495300*100)
,但在0.0
列中仍然有很多Percent of people
更新2
还尝试了repr((Decimal(655)/254495300*100))
,但还是一样。
答案 0 :(得分:0)
列显示是数据帧的渲染功能vibT
的结果。默认情况下,这一位默认为小数点后一位。有关更改此设置的详细信息,请参见PANDAS文档。
您的__repr__
语句使用Python呈现浮点数。在这种情况下,渲染程序会识别出最后一个非零数字位于第1000位,并在该点处截断显示。
答案 1 :(得分:0)
您可以将float格式化程序函数作为参数传递给数据框的to_string方法:
print(df.to_string(float_format=lambda f: '{:3.2e}%'.format(100 * f)))
在使用2.57e-04%
时将输出{:.4}%
,将输出0.0003%
。上面的功能是一个简短可用的选择,但是如果您要打印例如对于大多数值,其值为“ 1.23%”,但对于百分之一以下的值使用指数表示法。
答案 2 :(得分:0)
来自numpy docs-
import numpy as np
np.set_printoptions(suppress=True)
将确保“始终使用定点表示法打印浮点数,在这种情况下,当前精度为零的数字将打印为零”
In[2]: import numpy as np
In[3]: np.array([1/50000000])
Out[3]: array([2.e-08])
In[4]: np.set_printoptions(suppress=True)
In[5]: np.array([1/50000000])
Out[5]: array([0.00000002])
In[6]: np.set_printoptions(precision=6)
In[7]: np.array([1/50000000])
Out[7]: array([0.])