Polars: "ValueError: 无法将值 'Unknown' 转换为字面量"

5

我有一行代码在 polars 中,在我最近更新 polars 包到 '0.19.0' 之前是可以工作的。这个例子之前运行过:

import polars as pl

df = pl.DataFrame(
    {
        "a": [5, 6, 7, 8, 9],
        "b": [5, 6, 7, 8, 9],
        "c": [5, 6, 7, 8, None],})

cols_1 = ["a", "b"]
cols_2 = ["c"]

df = df.filter(pl.all(pl.col(cols_1 + cols_2).is_not_null()))


但现在出现了错误:
ValueError: could not convert value 'Unknown' as a Literal

3
可能需要报告为一个错误。您可以通过使用pl.all_horizontal()来修复它。 - undefined
8
该行为在0.18.8版本中已被弃用:DeprecationWarning: 使用all进行水平计算已被弃用。请改用all_horizontal它在0.19.0版本中被移除。 - undefined
3
好的,谢谢!只是添加了链接以供将来参考:https://github.com/pola-rs/polars/pull/9752 - undefined
1个回答

3
免责声明。我只是总结了@jqurious和@keraion的评论。
从polars 0.19.0版本开始,您需要使用专用的水平聚合函数,例如all_horizontalany_horizontal
import polars as pl

df = pl.DataFrame({
    "a": [5, 6, 7, 8, 9],
    "b": [5, 6, 7, 8, 9],
    "c": [5, 6, 7, 8, None]
})

df.filter(pl.all_horizontal(pl.col(["a", "b", "c"]).is_not_null()))
水平聚合在版本0.18.7中引入,并在0.18.8中被弃用。

我已经在我的代码上尝试了这个解决方案,但仍然出现相同的错误,我无法弄清楚原因:dividends.with_columns( ( pl.all_horizontal(pl.col(dividends.map_rows( lambda x: compute_forward_dividend( x[1], x[2], x[3], ) ) ))).alias("dividendsPerShare") ) - undefined
编辑:我找到了解决方法,使用以下代码: dividends.with_columns( ( dividends.map_rows( lambda x: compute_forward_dividend( x[1], x[2], x[3], ) ) ) ) - undefined
@Oubaluna 如果您提供一个最小可复现的示例,将会更容易帮助您。这里的 compute_forward_dividend 是什么? - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接