如何在 python 中关闭银行四舍五入?

How to switch off banker's rounding in python?

默认情况下python使用银行家四舍五入(四舍五入到最接近的四舍五入),即(10.5 变成 10,11.5 变成 12)。我希望我的一半总是向右圆。 (10.5 变成 11,11.5 变成 12,12.5 变成 13,当然 10.2 变成 10,10.7 变成 11)

import pandas as pd 
import numpy as np

data = [['tom', 10.5], ['nick', 11.5], ['jack', 10.2], ['juli', 10.7]] 
df = pd.DataFrame(data, columns = ['Name', 'Age']) 
#df = df.round({'Age': 0}) 
df["Age"] = df["Age"].apply(np.round)

列年龄的预期值为:11,12,10,11

你可以试试这个,

>>> import pandas as pd
>>> data = [['tom', 10.5], ['nick', 11.5], ['jack', 10.2], ['juli', 10.7]]
>>> df = pd.DataFrame(data, columns = ['Name', 'Age'])
>>> def round_school(x):
        i, f = divmod(x, 1)
        return int(i + ((f >= 0.5) if (x > 0) else (f > 0.5)))
>>> df['Age'] = df['Age'].apply(round_school)
>>> df
   Name  Age
0   tom   11
1  nick   12
2  jack   10
3  juli   11