Код: Выделить всё
u = 2
df = (polars.DataFrame(dict(
j=numpy.random.randint(10, 99, 10)
))
.with_row_count()
.with_columns(k=(polars.col('j') % 10) == u)
.with_columns(l=polars.col('k').any())
)
print(df)
print(df
.with_columns(i=polars
.when(polars.col('k').any())
.then(polars.col('row_nr') > polars.col('row_nr').where(polars.col('k')).first())
.otherwise(None)
)
)
Код: Выделить всё
row_nr (u32) j (i64) k (bool) l (bool)
0 47 false true
1 22 true true
2 82 true true
3 19 false true
4 85 false true
5 15 false true
6 89 false true
7 74 false true
8 26 false true
9 11 false true
shape: (10, 4)
row_nr (u32) j (i64) k (bool) l (bool) i (bool)
0 47 false true false
1 22 true true false
2 82 true true true
3 19 false true true
4 85 false true true
5 15 false true true
6 89 false true true
7 74 false true true
8 26 false true true
9 11 false true true
shape: (10, 5)
Код: Выделить всё
row_nr (u32) j (i64) k (bool) l (bool)
0 47 false false
1 22 false false
2 82 false false
3 19 false false
4 85 false false
5 15 false false
6 89 false false
7 74 false false
8 26 false false
9 11 false false
shape: (10, 4)
Код: Выделить всё
exceptions.ComputeError: cannot evaluate two series of different lengths (10 and 0)
Error originated in expression: '[(col("row_nr")) > (col("row_nr").filter(col("k")).first())]'
- Почему в этом случае не работает Polars.when().then().otherwise(), учитывая, что .then() не даже вычисляется в этом случае (поскольку .when(polars.col('k').any()) имеет значение false)?
- Есть ли способ сделать это в рамках одного выражения (не выходя «за пределы» выражения, т.е. обращаясь к чистому Python if/, используя канал и тому подобное)?
Код: Выделить всё
else
Подробнее здесь: https://stackoverflow.com/questions/768 ... d-is-false