rust 如何创建以Vec〈Vec>为系列的极坐标DataFrame< f64>

kpbwa7wx  于 2023-01-26  发布在  其他
关注(0)|答案(1)|浏览(144)

我想要这样的DataFrame:

timestamp  |          bids         |         asks         |  ticker
-------------------------------------------------------------------
1598215600 |  [[10, 20], [15, 30]] | [[20, 10], [25, 20]] |  "AAPL"
1598222400 |  [[11, 25], [16, 35]] | [[22, 15], [28, 25]] |  "MSFT"
1598229200 |  [[12, 30], [18, 40]] | [[24, 20], [30, 30]] |  "GOOG"

bids系列有一个Vec结构,简单地说,它是一个向量,包含一对(另一个向量)价格和金额(两个值)。
创建这个需要什么样的rust代码?如果可能的话,用rust来回答,但是python也可以工作,我想我可以重新创建它。

nuypyhwy

nuypyhwy1#

我是新的生 rust ,所以这可能不是最佳的。
从环顾四周,似乎块阵列可能是要走的路?

use polars::prelude::*;

fn build_column(rows: &Vec<[[i64; 2]; 2]>) -> Series {
    ListChunked::from_iter(rows.into_iter().map(|row| {
        ListChunked::from_iter(
            row.into_iter()
                .map(|values| Int64Chunked::from_slice("", values).into_series()),
        )
        .into_series()
    }))
    .into_series()
}

fn main() -> PolarsResult<()> {
    let asks = vec![
        [[20, 10], [25, 20]],
        [[22, 15], [28, 25]],
        [[24, 20], [30, 30]],
    ];

    let bids = vec![
        [[10, 20], [15, 30]],
        [[11, 25], [16, 35]],
        [[12, 30], [18, 40]],
    ];

    let df = df!(
            "timestamp" => [1598215600, 1598222400, 1598229200],
            "asks" => build_column(&asks),
            "bids" => build_column(&bids),
            "ticker" => ["AAPL", "MSFT", "GOOG"]
    );

    println!("{:?}", df);

    Ok(())
}
Ok(shape: (3, 4)
┌────────────┬──────────────────────┬──────────────────────┬────────┐
│ timestamp  ┆ asks                 ┆ bids                 ┆ ticker │
│ ---        ┆ ---                  ┆ ---                  ┆ ---    │
│ i32        ┆ list[list[i64]]      ┆ list[list[i64]]      ┆ str    │
╞════════════╪══════════════════════╪══════════════════════╪════════╡
│ 1598215600 ┆ [[20, 10], [25, 20]] ┆ [[10, 20], [15, 30]] ┆ AAPL   │
│ 1598222400 ┆ [[22, 15], [28, 25]] ┆ [[11, 25], [16, 35]] ┆ MSFT   │
│ 1598229200 ┆ [[24, 20], [30, 30]] ┆ [[12, 30], [18, 40]] ┆ GOOG   │
└────────────┴──────────────────────┴──────────────────────┴────────┘)

相关问题