Округление чисел до четырехзначных после десятичной дроби

#python #pandas

#python #pandas

Вопрос:

Я нормализую свои данные и хочу, наконец, сохранить округленное до 4 цифр число после запятой.

Приведенное ниже утверждение дает мне нормализованный результат, но как мне округлить каждое число до 4-значного числа после запятой.

 df_new = df.loc[:,"pos_score":"neg_sub_score"].div(100, axis=0)
  

Оригинал : 18.685714285714287

После нормализации: .1868 (желательно)

После нормализации: .18685714285714287 (текущий)

Комментарии:

1. df.loc[:,"pos_score":"neg_sub_score"].div(100, axis=0).round(4) ??

2. Я знаком с round (), но я попробую этот способ!

3. Ну, вы всегда можете сделать float('0.{}0000'.format(str(df_new*100))[:4]) .

Ответ №1:

Если нужны значения этажа, кратные на 100 , преобразуйте в целые числа и разделите на 10000 :

 df = pd.DataFrame({'pos_score':[18.68577,18.685714],
                   'neg_sub_score':[10.23, 12.536]})
print (df)
   pos_score  neg_sub_score
0  18.685770         10.230
1  18.685714         12.536

df_new1 = df.loc[:,"pos_score":"neg_sub_score"].mul(100).astype(int).div(10000)
print (df_new1)
   pos_score  neg_sub_score
0     0.1868         0.1023
1     0.1868         0.1253
  

Но если нужны круглые значения, добавьте DataFrame.round , но другой результат:

 df_new2 = df.loc[:,"pos_score":"neg_sub_score"].div(100).round(4)
print (df_new2)
   pos_score  neg_sub_score
0     0.1869         0.1023
1     0.1869         0.1254