给定一个像极坐标 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/