polars_core/frame/
filter.rs1use 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}