use crate::core::error::Result;
use crate::dataframe::DataFrame;
pub fn gt(df: &DataFrame, column: &str, value: f64) -> Result<Vec<bool>> {
let values = df.get_column_numeric_values(column)?;
Ok(values.iter().map(|v| !v.is_nan() && *v > value).collect())
}
pub fn ge(df: &DataFrame, column: &str, value: f64) -> Result<Vec<bool>> {
let values = df.get_column_numeric_values(column)?;
Ok(values.iter().map(|v| !v.is_nan() && *v >= value).collect())
}
pub fn lt(df: &DataFrame, column: &str, value: f64) -> Result<Vec<bool>> {
let values = df.get_column_numeric_values(column)?;
Ok(values.iter().map(|v| !v.is_nan() && *v < value).collect())
}
pub fn le(df: &DataFrame, column: &str, value: f64) -> Result<Vec<bool>> {
let values = df.get_column_numeric_values(column)?;
Ok(values.iter().map(|v| !v.is_nan() && *v <= value).collect())
}
pub fn eq_value(df: &DataFrame, column: &str, value: f64) -> Result<Vec<bool>> {
let values = df.get_column_numeric_values(column)?;
Ok(values
.iter()
.map(|v| !v.is_nan() && (*v - value).abs() < f64::EPSILON)
.collect())
}
pub fn ne_value(df: &DataFrame, column: &str, value: f64) -> Result<Vec<bool>> {
let values = df.get_column_numeric_values(column)?;
Ok(values
.iter()
.map(|v| v.is_nan() || (*v - value).abs() >= f64::EPSILON)
.collect())
}