我希望计算列中的连续值,最好使用 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)