use pandrs::error::Result;
use pandrs::{DataFrame, Series};
#[allow(clippy::result_large_err)]
#[allow(clippy::result_large_err)]
fn main() -> Result<()> {
println!("=== String Accessor Example ===");
let data = vec![
"Hello World".to_string(),
"RUST Programming".to_string(),
" pandas-like ".to_string(),
"Data Analysis".to_string(),
];
let series = Series::new(data, Some("text_data".to_string()))?;
println!("Original Series: {:?}", series.values());
let str_accessor = series.str()?;
let upper_result = str_accessor.upper()?;
println!("Uppercase: {:?}", upper_result.values());
let lower_result = str_accessor.lower()?;
println!("Lowercase: {:?}", lower_result.values());
let contains_result = str_accessor.contains("rust", false, false)?;
println!(
"Contains 'rust' (case insensitive): {:?}",
contains_result.values()
);
let startswith_result = str_accessor.startswith("hello", false)?;
println!(
"Starts with 'hello' (case insensitive): {:?}",
startswith_result.values()
);
let len_result = str_accessor.len()?;
println!("String lengths: {:?}", len_result.values());
let strip_result = str_accessor.strip(None)?;
println!("Stripped: {:?}", strip_result.values());
let replace_result = str_accessor.replace("a", "X", false, false)?;
println!("Replace 'a' with 'X': {:?}", replace_result.values());
let regex_contains = str_accessor.contains(r"\b[A-Z]+\b", true, true)?;
println!(
"Contains uppercase words (regex): {:?}",
regex_contains.values()
);
let extract_result = str_accessor.extract(r"([A-Z][a-z]+)", None)?;
println!(
"Extract first capitalized word: {:?}",
extract_result.values()
);
println!("\n=== DataFrame with String Operations ===");
let mut df = DataFrame::new();
df.add_column("text".to_string(), series)?;
println!("DataFrame created successfully with string column!");
Ok(())
}