我一直在尝试使用以下四舍五入数据。但是它给我一个错误
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
}
答案 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