如何在 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
默认情况下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