小编JGr*_*t06的帖子

使用 Polars 计算布尔(或数字)列中连续的 True(或 1)值?

我希望计算列中的连续值,最好使用 Polars 表达式。

import polars
df = pl.DataFrame(
   {"values": [True,True,True,False,False,True,False,False,True,True]}
)
Run Code Online (Sandbox Code Playgroud)

通过上面的示例数据框,我想计算连续 True 值的数量。

下面是使用 R 的 Data.Table 包的示例输出。

library(data.table)
dt <- data.table(value = c(T,T,T,F,F,T,F,F,T,T))
dt[, value2 := fifelse((1:.N) == .N & value == 1, .N, NA_integer_), by = rleid(value)]
dt
Run Code Online (Sandbox Code Playgroud)
价值 值2
真的 不适用
真的 不适用
真的 3
错误的 不适用
错误的 不适用
真的 1
错误的 不适用
错误的 不适用
真的 不适用
真的 2

有什么想法可以使用 Polars 有效地完成此操作吗?

[用新方法编辑]

我用下面的代码让它工作,但希望有一种更有效的方法。有人知道 value_counts 中的默认结构/字典字段名称吗?

(
    df.lazy()
    .with_row_count()
    .with_column(
        pl.when(pl.col("value") == False).then(
            pl.col("row_nr")
            
        ).fill_null(
            strategy …
Run Code Online (Sandbox Code Playgroud)

python-polars

5
推荐指数
1
解决办法
539
查看次数

标签 统计

python-polars ×1