Polars中如何将列表列展开为行?解决操作报错问题
解决Polars中列表列展开为行的问题
你的错误在于误用了select结合explode的方式,Polars中要将列表列展开为多行,需要直接调用DataFrame的explode()方法,而非在select语句中嵌套使用。
正确实现方法
直接对目标列表列调用explode()方法即可,其他列会自动重复对应到展开后的每一行:
# 展开mpg_by_cyl列为多行 pl_mtcars2.explode('mpg_by_cyl').head(10)
为什么你的代码报错?
- 你在
select中同时使用pl.all()和pl.exclude('mpg_by_cyl'),会导致其他列被重复选中,引发列名冲突 pl.col('mpg_by_cyl').explode()在select中使用时,仅会将列表列的元素转为同长度的列,但不会新增行;当列表长度与原行长度不匹配时就会报错。而DataFrame级别的explode()方法才是专门用来将列表列的每个元素拆分为独立行的API。
补充说明
如果需要同时对多个列表列展开,可以传入列名列表:
# 多列展开示例(若存在多个列表列) # pl_mtcars2.explode(['col1', 'col2'])
内容的提问来源于stack exchange,提问作者ViSa
相关产品推荐
相关产品推荐

