Polars 1.31.0中concat_arr不再支持pl.col作为参数?特性移除原因咨询
Polars 1.31.0中concat_arr不再支持pl.col作为参数?特性移除原因咨询
之前我一直用这段代码来合并多列生成数组类型的列:
pl.concat_arr(pl.col("X[m]", "Y[m]", "Z[m]")).alias("Antenna_position[m]")
但升级到Polars 1.31.0之后,这段代码突然跑不通了,直接抛出了DuplicateError,完整报错信息如下:
polars.exceptions.DuplicateError: the name 'Antenna_position[m]' is duplicate
It's possible that multiple expressions are returning the same default column name. If this is the case, try renaming the columns with.alias("new_name")to avoid duplicate column names.
后来摸索出两个简单的解决办法:
- 直接传入列名的字符串,不用
pl.col()进行包装:pl.concat_arr("X[m]", "Y[m]", "Z[m]").alias("Antenna_position[m]") - 改用
pl.concat_list()方法,这种方式可以继续保留pl.col()的写法:pl.concat_list(pl.col("X[m]", "Y[m]", "Z[m]")).alias("Antenna_position[m]")
考虑到Polars官方文档里明确推荐用Array类型替代List来获得更好的性能,所以第一种调整方案应该是更符合性能优化方向的选择。
不过我注意到Polars中Array相关的concat_arr功能目前还处于不稳定状态,有没有了解情况的朋友能说说,为什么突然移除了它对pl.col()参数的支持呢?
内容来源于stack exchange
相关产品推荐
相关产品推荐

