как округлить числа после десятичной точки в питоне - PullRequest
0 голосов
/ 16 апреля 2019

Я использую функцию numpy round, она хорошо работает во всех аспектах, но когда есть 15,65, она должна давать 15,7, но ее дает 15,6.Есть ли другой способ сделать это?потому что я читаю много тем, у numpy есть эта проблема.

df1['result']=df1['a'].apply(lambda x: np.round(x, decimals=1))

Ответы [ 3 ]

1 голос
/ 16 апреля 2019

Встроенная функция Python round () округляет до заданного числа цифр и возвращает число с плавающей запятой, если для округления не предусмотрено число цифр, округляется число до ближайшего целого числа.

array = [15.65, 15.64, 15.61, 15, 15.94, 15.96]
print([round(i,1) for i in array]) 

Дает вывод [15,7, 15,6, 15,6, 15, 15,9, 16,0]

1 голос
/ 16 апреля 2019

Есть хитрость, которая добавляет очень небольшое количество к данным и округляет. Но вы должны убедиться, что дельта меньше вашего разрешения.

df = pd.Series(np.arange(0,100,0.05))

df.round(1).head()    
# 0    0.0
# 1    0.0
# 2    0.1
# 3    0.2
# 4    0.2
# dtype: float64

(df+1e-10).round(1).head()    
# 0    0.0
# 1    0.1
# 2    0.1
# 3    0.2
# 4    0.2
# dtype: float64
0 голосов
/ 16 апреля 2019

Используйте round() встроенную функцию Python

In [1]: round(15.65, 1)
Out[1]: 15.7

В вашем случае:

df1['result']=df1['a'].apply(lambda x: round(x, 1))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...