Pelage: Defensive analysis for Polars
  • Get started
  • API Reference
  • Examples
  • Coming from dbt
  • Git
  1. Check functions
  2. accepted_values
  • API Reference
  • Check functions
    • has_columns
    • has_dtypes
    • has_no_nulls
    • has_no_infs
    • unique
    • unique_combination_of_columns
    • accepted_values
    • not_accepted_values
    • accepted_range
    • maintains_relationships
    • column_is_within_n_std
    • custom_check
  • Checks with group_by
    • has_shape
    • at_least_one
    • not_constant
    • not_null_proportion
    • has_mandatory_values
    • mutually_exclusive_ranges
    • is_monotonic
  • Exceptions
    • PolarsAssertError

On this page

  • accepted_values
    • Parameters
    • Returns
    • Examples
  1. Check functions
  2. accepted_values

accepted_values

checks.accepted_values(data, items)

Raises error if columns contains values not specified in items

Parameters

data: PolarsLazyOrDataFrame

:

items: Dict[str, List]

A dictionnary where keys are a string compatible with a pl.Expr, to be used with pl.col(). The value for each key is a List of all authorized values in the dataframe.

Returns

Type Description
PolarsLazyOrDataFrame The original polars DataFrame or LazyFrame when the check passes

Examples

>>> import polars as pl
>>> import pelage as plg
>>> items = {"a": [1, 2, 3], "b": ["a", "b", "c"]}
>>> df = pl.DataFrame(items)
>>> df.pipe(plg.accepted_values, {"a": [1, 2, 3]})
shape: (3, 2)
┌─────┬─────┐
│ a   ┆ b   │
│ --- ┆ --- │
│ i64 ┆ str │
╞═════╪═════╡
│ 1   ┆ a   │
│ 2   ┆ b   │
│ 3   ┆ c   │
└─────┴─────┘
>>> df.pipe(plg.accepted_values, {"a": [1, 2]})
Traceback (most recent call last):
...
pelage.checks.PolarsAssertError: Details
shape: (1, 1)
┌─────┐
│ a   │
│ --- │
│ i64 │
╞═════╡
│ 3   │
└─────┘
Error with the DataFrame passed to the check function:
--> It contains values that have not been white-Listed in `items`.
Showing problematic columns only.
unique_combination_of_columns
not_accepted_values