python - Polars 根据计算添加列抛出 TypeError : 'Expr' object is not subscriptable

标签 python python-polars

我正在尝试根据极坐标数据框计算两个坐标之间的距离。

import polars as pl
pl.Config.set_fmt_str_lengths(2000)
data={"a": ["782.83    7363.51    6293    40   PD","850.68    7513.1    6262.17    40   PD"], "b": ["795.88    7462.65    6293    40   PD","1061.64    7486.08    6124.85    40   PD"]}
df=pl.DataFrame(data)
df.with_columns((pl.col("a").str.replace_all(r" +"," ").str.split(' ',2)).alias('c'))
df
try:
    dfNew=df.with_columns((pl.col("a").str.replace_all(r" +"," ").str.split(' ',2)[:2]).alias('c'))
except Exception as e:
    print('It\'s not working - ', e)

要计算距离,我只需要使用空间分割值创建的列表中的前 3 个值。当我尝试执行此操作时,我收到一条错误消息“'Expr'对象不可下标”。 我怎样才能克服它?为了计算距离,我需要对 b 列进行相同的转换并使用 numpy 进行距离计算。

我试图使用列表理解和 lambda 但没有任何效果。 如何克服这个问题?提前致谢。

阿图尔

最佳答案

要从列表中获取前三个元素,您应该使用 .arr.slice() method然后将 list[str] 转换为 float 列表 list[f64] 以提供进一步的计算

df.with_columns([
    pl.col("a").str.replace_all(r" +", " ")\
        .str.split(" ").arr.slice(0,3)\
        .cast(pl.List(pl.Float64)).alias("c")
])

关于python - Polars 根据计算添加列抛出 TypeError : 'Expr' object is not subscriptable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75363356/

相关文章:

java - 无法从 java jar 运行 python 脚本

python - 线性方程的系数错误

python - 比较 Polars 中的 2 个表并根据该比较选择一个值

python-polars - 在 polars 中使用过滤器列表

python - Polars 将 pl.Object 转换为 pl.Utf8 : polars. 异常。ComputeError:无法转换 'Object' 类型

indexing - 在 Polars 中查找 "indexed"的最快方法是什么?

python-polars - 将 Polars 表达式序列化为 JSON 或 YAML 文件?

python - Azure 服务总线队列发送和接收消息的测试

python - 切片 jax.numpy 数组时性能下降

python - 具有列表理解的 Python 游程编码