【问题标题】:How to list, concatenate, and evaluate polars expressions?如何列出、连接和计算极坐标表达式?
【发布时间】:2023-02-01 02:42:37
【问题描述】:

我想在一个对象(列表、字典或其他)中存储许多不同的过滤器,然后能够选择我想要的过滤器并在 .filter() 方法中评估它们。下面是一个例子:

# Sample DataFrame
df = pl.DataFrame(
    {"col_a": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], "col_b": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]}
)

# Set a couple of filters
filter_1 = pl.col("col_a") > 5
filter_2 = pl.col("col_b") > 8

# Apply filters: this works fine!
df_filtered = df.filter(filter_1 & filter_2)

# Concatenate filters
filters = [filter_1, filter_2]

# This won't work:
df.filter((" & ").join(filters))
df.filter((" | ").join(filters))

(" & ").join(filters) 的正确方法是什么?

【问题讨论】:

    标签: python python-polars


    【解决方案1】:

    您可以使用pl.all()pl.any()

    >>> df.filter(pl.all(filters))
    shape: (2, 2)
    ┌───────┬───────┐
    │ col_a | col_b │
    │ ---   | ---   │
    │ i64   | i64   │
    ╞═══════╪═══════╡
    │ 9     | 9     │
    │ 10    | 10    │
    └───────┴───────┘
    
    >>> df.filter(pl.any(filters))
    shape: (5, 2)
    ┌───────┬───────┐
    │ col_a | col_b │
    │ ---   | ---   │
    │ i64   | i64   │
    ╞═══════╪═══════╡
    │ 6     | 6     │
    │ 7     | 7     │
    │ 8     | 8     │
    │ 9     | 9     │
    │ 10    | 10    │
    └───────┴───────┘
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-07-31
      • 2014-10-04
      • 1970-01-01
      • 2023-01-05
      • 1970-01-01
      • 2021-11-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多