我正在尝试根据极坐标数据框计算两个坐标之间的距离。
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/