cfpyo3_core/
df.rs

1//! # df
2//!
3//! a DataFrame module that mainly focuses on temporal data
4
5use crate::toolkit::array::AFloat;
6use numpy::{
7    datetime::{units::Nanoseconds, Datetime},
8    ndarray::{Array1, Array2, ArrayView1, ArrayView2},
9    PyFixedString,
10};
11
12mod io;
13mod meta;
14mod ops;
15
16pub const COLUMNS_NBYTES: usize = 32;
17pub type IndexDtype = Datetime<Nanoseconds>;
18pub type ColumnsDtype = PyFixedString<COLUMNS_NBYTES>;
19pub const INDEX_NBYTES: usize = core::mem::size_of::<IndexDtype>();
20
21#[derive(Debug)]
22pub struct OwnedDataFrame<T: AFloat> {
23    pub index: Array1<IndexDtype>,
24    pub columns: Array1<ColumnsDtype>,
25    pub values: Array2<T>,
26}
27#[derive(Debug)]
28pub struct DataFrameView<'a, T: AFloat> {
29    pub index: ArrayView1<'a, IndexDtype>,
30    pub columns: ArrayView1<'a, ColumnsDtype>,
31    pub values: ArrayView2<'a, T>,
32}
33
34pub enum DataFrame<'a, T: AFloat> {
35    View(DataFrameView<'a, T>),
36    Owned(OwnedDataFrame<T>),
37}