polars.Expr.round
-
Округляет базовые данные с плавающей точкой до
decimalsзнаков.- Параметры:
-
- decimals
-
Количество знаков после запятой для округления.
-
mode{‘half_to_even’, ‘half_away_from_zero’, ‘to_zero’} -
Используемая стратегия округления. «Округлённое значение» — это значение, имеющее не более
decimalsзнаков после запятой (например, целые числа приdecimals=0, кратные 0,1 приdecimals=1, 0,01 приdecimals=2и так далее).Стратегии, начинающиеся с
half_, округляют все значения до ближайшего округлённого значения и используют стратегию только для разрешения равенства, когда значение находится ровно посередине между двумя округлёнными значениями (например, 0,5 приdecimals=0, 0,05 приdecimals=1). Другие стратегии округления явно задают, какое округлённое значение выбирается, и применяются всегда, а не только для разрешения равенства.-
- half_to_even (по умолчанию)
-
Округляет до ближайшего значения; при равенстве выбирает ближайшее чётное значение. Например, 0,5 округляется до 0, 1,5 — до 2, 2,5 — до 2. Также известно как «банковское округление»; этот вариант используется по умолчанию, поскольку он обычно снижает накопительную погрешность округления.
-
- half_away_from_zero
-
Округляет до ближайшего значения; при равенстве округляет от нуля. Например, 0,5 округляется до 1, -0,5 — до -1, 2,5 — до 3. Также известно как «коммерческое округление».
-
- to_zero
-
Всегда округляет (усекает) в направлении к нулю, отбрасывая дробную часть после
decimals. Например, 0,9 округляется до 0, -0,9 — до 0, 1,29 — до 1,2 (приdecimals=1). Эквивалентно методуtruncate().
-
См. также
-
ceil -
Округляет вверх до ближайшего целого числа.
-
floor -
Округляет вниз до ближайшего целого числа.
-
round_sig_figs -
Округляет до заданного количества значащих цифр.
-
truncate -
Усекает до заданного количества знаков после запятой.
Примеры
>>> df = pl.DataFrame({"a": [0.33, 0.52, 1.02, 1.17]}) >>> df.select(pl.col("a").round(1)) shape: (4, 1) ┌─────┐ │ a │ │ --- │ │ f64 │ ╞═════╡ │ 0.3 │ │ 0.5 │ │ 1.0 │ │ 1.2 │ └─────┘>>> df = pl.DataFrame( ... { ... "f64": [-3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 3.5], ... "d": ["-3.5", "-2.5", "-1.5", "-0.5", "0.5", "1.5", "2.5", "3.5"], ... }, ... schema_overrides={"d": pl.Decimal(scale=1)}, ... ) >>> df.with_columns( ... pl.all().round(mode="half_away_from_zero").name.suffix("_away"), ... pl.all().round(mode="half_to_even").name.suffix("_to_even"), ... ) shape: (8, 6) ┌──────┬───────────────┬──────────┬───────────────┬─────────────┬───────────────┐ │ f64 ┆ d ┆ f64_away ┆ d_away ┆ f64_to_even ┆ d_to_even │ │ --- ┆ --- ┆ --- ┆ --- ┆ --- ┆ --- │ │ f64 ┆ decimal[38,1] ┆ f64 ┆ decimal[38,1] ┆ f64 ┆ decimal[38,1] │ ╞══════╪═══════════════╪══════════╪═══════════════╪═════════════╪═══════════════╡ │ -3.5 ┆ -3.5 ┆ -4.0 ┆ -4.0 ┆ -4.0 ┆ -4.0 │ │ -2.5 ┆ -2.5 ┆ -3.0 ┆ -3.0 ┆ -2.0 ┆ -2.0 │ │ -1.5 ┆ -1.5 ┆ -2.0 ┆ -2.0 ┆ -2.0 ┆ -2.0 │ │ -0.5 ┆ -0.5 ┆ -1.0 ┆ -1.0 ┆ -0.0 ┆ 0.0 │ │ 0.5 ┆ 0.5 ┆ 1.0 ┆ 1.0 ┆ 0.0 ┆ 0.0 │ │ 1.5 ┆ 1.5 ┆ 2.0 ┆ 2.0 ┆ 2.0 ┆ 2.0 │ │ 2.5 ┆ 2.5 ┆ 3.0 ┆ 3.0 ┆ 2.0 ┆ 2.0 │ │ 3.5 ┆ 3.5 ┆ 4.0 ┆ 4.0 ┆ 4.0 ┆ 4.0 │ └──────┴───────────────┴──────────┴───────────────┴─────────────┴───────────────┘
Expr.round(
decimals: int = 0,
mode: RoundMode = 'half_to_even',
) → Expr
© 2020 Ritchie Vink
© 2022 Polars contributors
Licensed under the MIT License.
https://docs.pola.rs/api/python/stable/reference/expressions/api/polars.Expr.round.html