Skip to main content

polars_core/frame/
filter.rs

1use polars_error::{PolarsResult, polars_ensure};
2
3use crate::frame::DataFrame;
4use crate::prelude::BooleanChunked;
5
6pub(super) fn filter_zero_width(height: usize, mask: &BooleanChunked) -> PolarsResult<DataFrame> {
7    let new_height = if mask.len() == 1 {
8        match mask.get(0) {
9            Some(true) => height,
10            _ => 0,
11        }
12    } else {
13        polars_ensure!(
14            height == mask.len(),
15            ShapeMismatch:
16            "cannot filter DataFrame of height {} with mask of length {}",
17            height, mask.len(),
18        );
19
20        mask.num_trues()
21    };
22
23    Ok(DataFrame::empty_with_height(new_height))
24}