Python 极地 : Number of rows since last value >0

标签 python dataframe python-polars

给定一个像极坐标 DataFrame

[0, 29, 28, 4, 0, 0, 13, 0]

如何获得一个新列,例如

[1, 0, 0, 0, 1, 2, 0, 1]

该解决方案最好使用 .over() 来处理分组值,并可选择使用额外的滚动窗口函数,例如 rolling_mean()

我知道各自的question对于 pandas 但无法翻译它。

最佳答案

这是一种使用 rle_id 来识别要投影的组的方法,并且仅对具有 0 组执行此操作当/然后:

df = pl.from_dict({'a': [0, 29, 0, 28, 4, 0, 0, 0, 13, 0, 0, 46, 47, 0]})

df.with_columns(
    b=pl.when(pl.col('a') == 0)
    .then(1 + pl.col('a').cumcount().over(pl.col('a').ne(0).rle_id()))
    .otherwise(0)
)
shape: (14, 2)
┌─────┬─────┐
│ a   ┆ b   │
│ --- ┆ --- │
│ i64 ┆ u32 │
╞═════╪═════╡
│ 0   ┆ 1   │
│ 29  ┆ 0   │
│ 0   ┆ 1   │
│ 28  ┆ 0   │
│ 4   ┆ 0   │
│ 0   ┆ 1   │
│ 0   ┆ 2   │
│ 0   ┆ 3   │
│ 13  ┆ 0   │
│ 0   ┆ 1   │
│ 0   ┆ 2   │
│ 46  ┆ 0   │
│ 47  ┆ 0   │
│ 0   ┆ 1   │
└─────┴─────┘

关于Python 极地 : Number of rows since last value >0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/76988796/

相关文章:

Python-极性:如何将列表中的每个元素与不同列中的值相乘?

python - for 循环 - 没有足够的值来解包(预期为 3,得到 2)但我提供了 3

android - 使用 python 和 SL4A 初始化 android 网络摄像头时 setParameters 失败

python - 如何在 MultiIndexed Datarfame 中对一个索引大于 X 的所有值求和,并根据其他索引进行分组?

python - 将 DataFrame 过滤为重复项并计算结果的分组均值

python - Polars API 注册和类型检查器

python-polars - 如何在不同运行时之间共享惰性数据帧?

python - 使用 Pandas 删除值高于具有相同 id 的所有行的最小值的行

python - 无法根据规则 ('<M8[ns]' 将数组数据从 dtype ('float64' ) 转换为 dtype 'safe' )

r - 如何在 R 中以特定格式显示数据框