得到不同的极性在生 rust 的框架

ev7lccsx  于 11个月前  发布在  其他
关注(0)|答案(1)|浏览(122)
use polars::prelude::*;

fn main() -> PolarsResult<()> {
    let df = df! (
        "nrs" => &[Some(1), Some(2), Some(3), Some(4), Some(5)],
        "names" => &[Some("foo"), Some("ham"), Some("spam"), Some("eggs"), None],
        "groups" => &["A", "A", "B", "C", "B"],
    )?;

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

    let df2 = df.lazy().filter(col("nrs").lt(lit(4))).collect()?;

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

    Ok(())
}

个字符
我定义了1个嵌套框架。然后我使用一些条件过滤掉一些行,这会产生一个新的嵌套框架。如何获得它们的差异?在这种情况下,差异应该是过滤器删除的2行嵌套框架。
PS:与其逆转条件,不如采用更一般的方法。

hsgswve4

hsgswve41#

你可以使用一个反连接(通过特性semi_anti_join启用)来实现这一点:

use polars::prelude::*;

fn main() -> PolarsResult<()> {
    let df = df! (
        "nrs" => &[Some(1), Some(2), Some(3), Some(4), Some(5)],
        "names" => &[Some("foo"), Some("ham"), Some("spam"), Some("eggs"), None],
        "groups" => &["A", "A", "B", "C", "B"],
    )?;

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

    //     shape: (5, 3)
    // ┌─────┬───────┬────────┐
    // │ nrs ┆ names ┆ groups │
    // │ --- ┆ ---   ┆ ---    │
    // │ i32 ┆ str   ┆ str    │
    // ╞═════╪═══════╪════════╡
    // │ 1   ┆ foo   ┆ A      │
    // │ 2   ┆ ham   ┆ A      │
    // │ 3   ┆ spam  ┆ B      │
    // │ 4   ┆ eggs  ┆ C      │
    // │ 5   ┆ null  ┆ B      │
    // └─────┴───────┴────────┘

    let df2 = df.clone().lazy().filter(col("nrs").lt(lit(4)));

    println!("{:?}", df2.clone().collect()?);

    //     shape: (3, 3)
    // ┌─────┬───────┬────────┐
    // │ nrs ┆ names ┆ groups │
    // │ --- ┆ ---   ┆ ---    │
    // │ i32 ┆ str   ┆ str    │
    // ╞═════╪═══════╪════════╡
    // │ 1   ┆ foo   ┆ A      │
    // │ 2   ┆ ham   ┆ A      │
    // │ 3   ┆ spam  ┆ B      │
    // └─────┴───────┴────────┘

    let disjoint_df = df.lazy().join(
        df2,
        [col("nrs"), col("names"), col("groups")],
        [col("nrs"), col("names"), col("groups")],
        JoinArgs::new(JoinType::Anti),
    );

    println!("{:?}", disjoint_df.collect()?);

    //     shape: (2, 3)
    // ┌─────┬───────┬────────┐
    // │ nrs ┆ names ┆ groups │
    // │ --- ┆ ---   ┆ ---    │
    // │ i32 ┆ str   ┆ str    │
    // ╞═════╪═══════╪════════╡
    // │ 4   ┆ eggs  ┆ C      │
    // │ 5   ┆ null  ┆ B      │
    // └─────┴───────┴────────┘
    Ok(())
}

字符串

相关问题