Sha256: 60867ac77f4e260eb30fa6727abce1b6eef9d92410a95e95b52569c1b835b547

Contents?: true

Size: 1.5 KB

Versions: 4

Compression:

Stored size: 1.5 KB

Contents

use magnus::{prelude::*, IntoValue, RArray, Value};

use super::*;
use crate::conversion::{ObjectValue, Wrap};

impl RbDataFrame {
    pub fn row_tuple(&self, idx: i64) -> Value {
        let idx = if idx < 0 {
            (self.df.borrow().height() as i64 + idx) as usize
        } else {
            idx as usize
        };
        RArray::from_iter(
            self.df
                .borrow()
                .get_columns()
                .iter()
                .map(|s| match s.dtype() {
                    DataType::Object(_, _) => {
                        let obj: Option<&ObjectValue> = s.get_object(idx).map(|any| any.into());
                        obj.unwrap().to_object()
                    }
                    _ => Wrap(s.get(idx).unwrap()).into_value(),
                }),
        )
        .as_value()
    }

    pub fn row_tuples(&self) -> Value {
        let df = &self.df;
        RArray::from_iter((0..df.borrow().height()).map(|idx| {
            RArray::from_iter(
                self.df
                    .borrow()
                    .get_columns()
                    .iter()
                    .map(|s| match s.dtype() {
                        DataType::Object(_, _) => {
                            let obj: Option<&ObjectValue> = s.get_object(idx).map(|any| any.into());
                            obj.unwrap().to_object()
                        }
                        _ => Wrap(s.get(idx).unwrap()).into_value(),
                    }),
            )
        }))
        .as_value()
    }
}

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
polars-df-0.14.0 ext/polars/src/dataframe/export.rs
polars-df-0.13.0 ext/polars/src/dataframe/export.rs
polars-df-0.12.0 ext/polars/src/dataframe/export.rs
polars-df-0.11.0 ext/polars/src/dataframe/export.rs