是否有一个函数可以在保持订单的同时将我的数字四舍五入?

问题描述 投票:1回答:2

我已经使用熊猫创建了一个数据框,我的数字处于e-18等的力量范围内。但是,我所有的数字都四舍五入到小数点后六位,我想将其减少到5 d.p。

我尝试按照建议使用round()函数,但这会将我的所有最小值四舍五入为0.0。我想要例如1.23456e-19的格式。

data = {'n':n, 'Electron O.Radius (m)|':lithiumorbit (n,me), 
        'Muon O.Radius (m)|':lithiumorbit (n,mmuon), 'Electron Wavelength (m)|':lithiumλ (n,me),
       'Muon Wavelength (m)|':lithiumλ (n,mmuon), 'Electron Energy (eV)|':lithiumUn (n,me)*(6.242e18),
       'Muon Energy (eV)|':lithiumUn (n,mmuon)*(6.242e18), 'Excited Photon Emission (eV)|':Photonemit,
       'Excited Muon Emission (eV)|':Muonemit}
df_=pd.DataFrame(data)
df_.set_index('n', inplace=True)

后续输出为:

Electron O.Radius(m)|Muon O.Radius (m)| Electron Wavelength(m)| 
 \
n                                                                          
1             1.763836e-11        8.530499e-14              1.108251e-10   
2             7.055344e-11        3.412200e-13              2.216502e-10   
3             1.587452e-10        7.677449e-13              3.324752e-10   
4             2.822137e-10        1.364880e-12              4.433003e-10   
5             4.409590e-10        2.132625e-12              5.541254e-10   
6             6.349809e-10        3.070980e-12              6.649505e-10   
7             8.642796e-10        4.179945e-12              7.757755e-10   
8             1.128855e-09        5.459520e-12              8.866006e-10   
9             1.428707e-09        6.909704e-12              9.974257e-10   
10            1.763836e-09        8.530499e-12              1.108251e-09   
11            2.134241e-09        1.032190e-11              1.219076e-09   
12            2.539924e-09        1.228392e-11              1.329901e-09   
13            2.980883e-09        1.441654e-11              1.440726e-09   
14            3.457118e-09        1.671978e-11              1.551551e-09   
15            3.968631e-09        1.919362e-11              1.662376e-09   
16            4.515420e-09        2.183808e-11              1.773201e-09   
17            5.097486e-09        2.465314e-11              1.884026e-09   
18            5.714828e-09        2.763882e-11              1.994851e-09   
19            6.367448e-09        3.079510e-11              2.105676e-09   
20            7.055344e-09        3.412200e-11              2.216502e-09

根据需要,但位数太多。

python pandas numpy rounding
2个回答
1
投票

设置显示选项:

pd.options.display.float_format = '{:,.5e}'.format

然后只是print(df _)。当然,这仅会更改显示格式。内部所有数字均以“通常”的精度保存。

替代

要以单独的格式显示每一列,您可以使用类似的内容:

df.style.format({
    'var1': '{:,.2f}'.format,
    'var2': '{:,.2f}'.format,
    'var3': '{:,.2%}'.format,
})

根据需要设置列名称及其格式。


0
投票

您可以使用pandas.DataFrame.round()如下进行操作。

pandas.DataFrame.round()
© www.soinside.com 2019 - 2024. All rights reserved.