数据四舍五入到小数点后 3 位

时间:2021-02-02 18:15:07

标签: python-3.x pandas dataframe

我一直在尝试使用以下四舍五入数据。但是它给我一个错误

int nCommonButtons = 0;

switch(nType)
{
case MB_YESNOCANCEL:
    nCommonButtons |= TDCBF_CANCEL_BUTTON;
case MB_YESNO:
    nCommonButtons |= TDCBF_YES_BUTTON | TDCBF_NO_BUTTON; 
    break;

case MB_OKCANCELRETRY:
    nCommonButtons |= TDCBF_RETRY_BUTTON;
case MB_OKCANCEL:
    nCommonButtons |= TDCBF_CANCEL_BUTTON;
case MB_OK:
    nCommonButtons |= TDCBF_OK_BUTTON; 
    break;

//... etc
}

enter image description here

1 个答案:

答案 0 :(得分:0)

您可以通过多种方式对数据进行四舍五入。请注意,您正在尝试将数据四舍五入到小数点后 3 位。所有大于 99.999 的值都会将自身四舍五入为 100.0

最好的选择是使用你所做的。不知道为什么你不能四舍五入。

选项 1:

df['Rounded2'] = df.Data.round(3)

选项 2:

df['Rounded1'] = df.round({'Data':3})

这是完整的代码和输出:

import pandas as pd
df = pd.DataFrame({'Data':[99.999824,99.999839,99.999982,
                           99.999996,99.999997,99.999971,99.999942]})
print (df)
df['Rounded1'] = df.round({'Data':3})
df['Rounded2'] = df.Data.round(3)


print (df)

以上代码的输出:

        Data  Rounded1  Rounded2
0  99.999824     100.0     100.0
1  99.999839     100.0     100.0
2  99.999982     100.0     100.0
3  99.999996     100.0     100.0
4  99.999997     100.0     100.0
5  99.999971     100.0     100.0
6  99.999942     100.0     100.0

如果您希望数据以 3 位小数打印,则添加此行。

pd.options.display.float_format = "{:,.3f}".format

请注意,它将所有数据转换为 3 个小数位并打印。这将使您的 Data 字段也打印到小数点后 3 位。

     Data  Rounded1  Rounded2
0 100.000   100.000   100.000
1 100.000   100.000   100.000
2 100.000   100.000   100.000
3 100.000   100.000   100.000
4 100.000   100.000   100.000
5 100.000   100.000   100.000
6 100.000   100.000   100.000

如果您希望将特定列转换为 3 位数字,那么您可以在 Jupyter Notebook 中使用 DataFrame.style。

df.style.format({'Rounded1': "{:.3f}", 'Rounded2': '{:.3f}'})

输出将是:

         Data   Rounded1    Rounded2
0   99.999824    100.000     100.000
1   99.999839    100.000     100.000
2   99.999982    100.000     100.000
3   99.999996    100.000     100.000
4   99.999997    100.000     100.000
5   99.999971    100.000     100.000
6   99.999942    100.000     100.000